Код ниже работает: он читает файл с именем «file.txt», который находится в папке «assets» APK, и сохраняет его в буфере. Пока все хорошо:
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();
Если, однако, файл, который я хочу прочитать, находится в подпапке ресурсов, например, вложенная папка «sub», и я предоставляю этот Uri для вышеуказанного кода:
String u = "content://com.example.app/sub/file.txt:assets"
... тогда в этом случае я ничего не получу. Файл там, как assets / sub / file.txt, но приведенный выше код возвращает пустой буфер. Единственное изменение, которое я сделал, это заменил «file.txt» на «sub / file.txt», который указывает, где хранится файл.
Что я делаю не так? Это неправильно, чтобы создать строку URI вручную, как это? Я считаю, что разрешено хранить файлы в подпапках ресурсов ... Если это разрешено, как мне указать путь в строке URI?
Обратите внимание, что я не пытаюсь предоставить доступ к файлу другому приложению, я просто хочу прочитать свой собственный файл из активов моего собственного APK и поместить его в буфер для внутреннего использования.
Любая помощь очень ценится!