【问题标题】:Accessing to files inside obb expansion file访问obb扩展文件中的文件
【发布时间】:2012-09-28 06:57:37
【问题描述】:

我正在关注所有官方扩展文件指南,但我找不到。我无法访问我需要的包含的 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()); }
    }
}

在->assetFileDescriptor = 扩展文件.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");
    }

【问题讨论】:

  • 也许这个答案会以某种方式帮助你stackoverflow.com/questions/11715855/…
  • 不,这是我使用过的资源之一,但没有关于读取 obb 内的文件。
  • 我试过AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor(zip[0].mFileName);。但fd 为空。你能帮帮我吗?
  • 您尝试使用真实文件名而不是 zip[0].mFileName 吗?
  • 当我使用此代码时,它从 ZipResourceFile.class 返回错误“不是 zip 存档”

标签: android expansion-files apk-expansion-files


【解决方案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");
}

【讨论】:

  • ,我收到类似“创建类 APKExpansionSupport”的错误。我需要添加/下载任何库吗?请帮帮我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多