Android, кажется, облегчает загрузку ресурсов определенных типов. Как только я немного покидаю проторенный путь, это кажется менее полезным. Я могу загружать изображения, звуки и другие объекты из папки ресурсов, если и только если они относятся к определенным типам. Если я пытаюсь загрузить двоичный файл моего собственного формата, я получаю не очень полезное исключение «файл не найден», даже если перечисление каталога показывает, что оно явно там.
Я пытался использовать следующие методы для чтения двоичного файла пользовательского формата из каталога ресурсов:
File jfile = new File("file://android_asset/"+filename); //tried to get the URI of the assets folder
JarFile file = new JarFile("assets/"+filename); //tried assuming the assets folder is root
fd = am.openNonAssetFd( filename); //tried getting my file as an non asset in the assets folder (n.b. it is definitely there)
fs = am.open(filename, AssetManager.ACCESS_BUFFER); //tried loading it as an asset
Я думаю, что есть что-то фундаментальное в вводе-выводе файлов Android, которое я пока не понимаю. Документация по управлению активами кажется неполной, и должна быть какая-то причина, чтобы преднамеренно сделать это неинтуитивным (что-то связанное с безопасностью?) Итак, что за надежный, канонический способ загрузки двоичного файла моего собственного формата в приложение для Android?
UPDATE:
Я попробовал файл: /// android_asset /, но все равно не радости.
String fullfilename = "file:///android_asset/"+filename;
File jfile = new File(fullfilename);
if (jfile.exists())
{
return new FileInputStream(jfile);
}
else
{
return null; //the file does exist but it always says it doesn't.
}
Существуют ли какие-либо разрешения для файла или манифеста проекта, которые мне нужны?
Спасибо