下面的代码可以正常运行:它读取名为“file.txt”的文件,该文件位于APK的“assets”文件夹中,并将其存储在缓冲区中。到目前为止,一切都很好。
String u = "content://com.example.app/file.txt:assets"
ContentResolver r = controls.activity.getContentResolver();
InputStream in = r.openInputStream(Uri.parse(u));
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int n = in.read(buffer);
while (n >= 0) {
out.write(buffer, 0, n);
n = in.read(buffer);
}
in.close();
return out.toByteArray();
如果我要读取的文件在assets的子文件夹中,例如子文件夹"sub",并且我将此Uri提供给上述代码:
String u = "content://com.example.app/sub/file.txt:assets"
如果按照上述代码更改了文件路径为"sub/file.txt"并指向文件所在位置,但是返回的仍然是空缓冲区,这种情况下可能出现了问题。请注意,文件实际上存在于"assets/sub/file.txt"的位置。
那么我到底做错了什么呢?手动创建uri字符串是否有误?我相信允许将文件存储在assets子文件夹中...如果允许,如何在uri字符串中指定路径?
请注意,我没有试图将文件授权给另一个应用程序,我只是想从我的APK的assets中读取自己的文件,并将其放入缓冲区以供内部使用。
非常感谢任何帮助!