Если вы не можете использовать API-интерфейс AssetManager C, поскольку вам нужно вызвать библиотеку C / C ++, для которой требуется имя файла, вместо этого можно использовать необработанный ресурс.
Единственный недостаток - это необходимостьбыть скопированы в каталог данных (temp) вашего приложения во время выполнения.
Поместите файл в res / raw
Поместите файл, который вы хотите прочитать из нативного кода, в res/raw
dir.
Создание копии
Во время выполнения скопируйте файл из res/raw/myfile.xml
в data
dir:
File dstDir = getDir("data", Context.MODE_PRIVATE);
File myFile = new File(dstDir, "tmp_myfile.xml");
FileMgr.copyResource(getResources(), R.raw.my_file, myFile);
Теперь имя файла для передачи в ваш собственный код:myFile.getAbsolutePath()
copyResource (rsrcId, dstFile)
public static File copyResource (Resources r, int rsrcId, File dstFile) throws IOException
{
// load cascade file from application resources
InputStream is = r.openRawResource(rsrcId);
FileOutputStream os = new FileOutputStream(dstFile);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = is.read(buffer)) != -1)
os.write(buffer, 0, bytesRead);
is.close();
os.close();
return dstFile;
}