访问obb扩展文件中的文件

Jor*_*rdi 5 android expansion-files apk-expansion-files

我正在关注所有官方扩展文件指南,但我找不到它.我无法访问我需要的包含的obb文件.

我需要6个音频文件(80Mb),我在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()); }
    }
}
Run Code Online (Sandbox Code Playgroud)

In - > assetFileDescriptor = expansionFile.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");
    }
Run Code Online (Sandbox Code Playgroud)

Jor*_*rdi 1

正如 Aarolama Bluenk 所建议的,这是答案代码(重复)

发现,这是我第一次读时不明白的一行,或者我只是错过了它。

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");
}
Run Code Online (Sandbox Code Playgroud)