APK 拡張ファイルのダウンロード サービスを実装しました。すべてhttp://developer.android.com/google/play/expansion-files.htmlから
APK 拡張ファイルをダウンロードでき、以下のコードを使用してそのファイルを表示できます
try {
ZipResourceFile expansionFile = APKExpansionSupport
.getAPKExpansionZipFile(this, 3, 0);
ZipEntryRO[] zip = expansionFile.getAllEntries();
Log.e("", "" + zip[0].mFile.getAbsolutePath());
Log.e("", "" + zip[0].mFileName);
Log.e("", "" + zip[0].mZipFileName);
Log.e("", "" + zip[0].mCompressedLength);
AssetFileDescriptor fd = expansionFile
.getAssetFileDescriptor(zip[0].mFileName);
if (fd != null && fd.getFileDescriptor() != null) {
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(fd.getFileDescriptor());
mp.start();
} else {
Log.e("", "fd or fd.getFileDescriptor() is null");
}
} catch (IOException e) {
e.printStackTrace();
}
私のobbにはファイルがtest.mp4
あり、私のコードLog.e("", "" + zip[0].mFileName);
は印刷されますtest.mp4.
私fd
はnull
。なぜnull
ですか?解決しようとしていますが、解決できませんでした。
obbファイル内のファイルを読み取ることができません。
未回答obb拡張ファイル内のファイルへのアクセスはアイデアを示唆していますが、私にとってはうまくいきません。
APK 拡張ファイルを作成する手順は、obb からコンテンツを解凍してから読み取るように指示します。それは信頼性が高く、良いですか?
ベストプラクティスについて意見が必要です。
編集
私のログ
03-01 10:36:40.848: E/(27836): zip[0].isUncompressed() : false
03-01 10:36:40.848: E/(27836): mFile.getAbsolutePath() : /storage/sdcard0/Android/obb/smart.trigger/main.3.smart.trigger.obb
03-01 10:36:40.848: E/(27836): mFileName : test.mp4
03-01 10:36:40.848: E/(27836): mZipFileName : /storage/sdcard0/Android/obb/smart.trigger/main.3.smart.trigger.obb
03-01 10:36:40.848: E/(27836): mCompressedLength : 21657598