Доступ к файлам внутри файла расширения obb

Я следую всем официальным руководствам по файлам расширения, но не могу найти их. Я не могу получить доступ к нужному файлу obb.

Мне нужно 6 аудиофайлов (80 МБ), которые я "хранил" (без сжатия) в zip-файле и переименовал в "main.2001.test.expansion.proj.obb" и сохранил в "/mnt/sdcard/Android/obb/test"..expansion.proj/"

Я постараюсь получить доступ к файлам

String mainFileName = Helpers.getExpansionAPKFileName(this,true,2001);
if(!Helpers.doesFileExist(this, mainFileName, 27959282L, false))
{
    //download
} else {
    Log.d("test_file","file exist");
}

ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(this,2001,2001);
if(expansionFile!=null)
{
    ZipEntryRO[] ziro = expansionFile.getAllEntries();
    for (ZipEntryRO entry : ziro) {
        Log.d("test_files_zip", "fileZip filename: "+entry.getZipFileName());
        try{
            AssetFileDescriptor ro = entry.getAssetFileDescriptor();
            Log.d("test_files_zip", "--fileZip getfiledescriptor.tostring: "+ro.getFileDescriptor().toString());
            Log.d("test_files_zip", "--fileZip createinputstring.tostring: "+ro.createInputStream().toString());

            AssetFileDescriptor assetFileDescriptor = expansionFile.getAssetFileDescriptor(entry.getZipFileName()+"/audio02.mp3");
            if(assetFileDescriptor!=null) {
                Log.d("test_files_mp3", "length: "+assetFileDescriptor.getLength()); //checking it exists
            }
        }catch (IOException e){ Log.e("test_exp","IoExcp: "+e.getMessage()); }
    }
}

In -> assetFileDescriptor = extensionFile.getAssetFileDescriptor(.....); Я попробовал все, что я выяснил и нашел в разных местах, но я не смог взять файл. Есть ли способ получить файл по его имени, если он внутри zip?

Приложение должно воспроизводить эти файлы в определенном порядке, и мы не хотим разархивировать файлы и сделать их "общедоступными".


Ред. Ответь себе

Нашел, это была строка, которую я не понял, когда впервые прочитал ее, или просто скучаю по ней.

ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(this,2001,2001);
if(expansionFile!=null){
        FileDescriptor fd = expansionFile.getAssetFileDescriptor("audio_01.mp3");
        //or
        InputStream is = expansionFile.getInputStream("audio_01.mp3");
    }

1 ответ

Решение

Как предложил Ааролама Блюенк, вот код ответа (уточнено)

Нашел, это была строка, которую я не понял, когда впервые прочитал ее, или просто скучаю по ней.

ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(this,2001,2001);
if(expansionFile!=null){
        FileDescriptor fd = expansionFile.getAssetFileDescriptor("audio_01.mp3");
        //or
        InputStream is = expansionFile.getInputStream("audio_01.mp3");
}
Другие вопросы по тегам