从加密的OBB文件中读取文件
问题描述:
我从JOBB工具创建了一个加密的OBB文件,我试图访问里面的文件,里面有一些图像“image1.jpg,image2.jpg”等。到目前为止,我是能够与成功安装它:从加密的OBB文件中读取文件
public void mountExpansion() {
final StorageManager storageManager = (StorageManager) this.getSystemService(Context.STORAGE_SERVICE);
String packageName = "com.nick.app";
String filePath = Environment.getExternalStorageDirectory()
+ "/Android/obb/" + packageName + "/" + "main."
+ getString(R.string.apk_expansion_version) + "." + packageName + ".obb";
final File mainFile = new File(filePath);
if (mainFile.exists()) {
Log.d("STORAGE", "FILE: " + filePath + " Exists");
} else {
Log.d("STORAGE", "FILE: " + filePath + " DOESNT EXIST");
}
String key = "123456";
if (!storageManager.isObbMounted(mainFile.getAbsolutePath())) {
if (mainFile.exists()) {
if(storageManager.mountObb(mainFile.getAbsolutePath(), key,
new OnObbStateChangeListener() {
@Override
public void onObbStateChange(String path, int state) {
super.onObbStateChange(path, state);
Log.d("PATH = ",path);
Log.d("STATE = ", state+"");
expansionFilePath = storageManager.getMountedObbPath(path);
if (state == OnObbStateChangeListener.MOUNTED) {
expansionFilePath = storageManager
.getMountedObbPath(path);
Log.d("STORAGE","-->MOUNTED");
Log.d("NICK","length()"+mainFile.length());
Log.d("NICK","getAbsolutePath()"+mainFile.getAbsolutePath());
Log.d("NICK","isDirectory()"+mainFile.isDirectory());
}
else {
Log.d("##", "Path: " + path + "; state: " + state);
}
}
}))
{
Log.d("STORAGE_MNT","SUCCESSFULLY QUEUED");
}
else
{
Log.d("STORAGE_MNT","FAILED");
}
} else {
Log.d("STORAGE", "Patch file not found");
}
}
}
而且在我的日志我看到OnObbStateChangeListener
返回“1”的状态指示加密OBB文件将成功安装。然而在这一点上,我不知道如何访问它里面的文件并利用它们。例如,将它们加载到一个ImageView
等。对于我在这里失踪的任何建议?
答
storageManager.mountObb(main.getPath(), null, new OnObbStateChangeListener() {
@Override
public void onObbStateChange(String path, int state) {
super.onObbStateChange(path, state);
if (state == MOUNTED) {
Toast.makeText(MainActivity.this, "obb mounted", Toast.LENGTH_LONG).show();
File file = new File(storageManager.getMountedObbPath(path));
} else
Toast.makeText(MainActivity.this, "mount fail :" + path, Toast.LENGTH_LONG).show();
}
});
该文件对象是obb中所有文件的目录。 要访问那些你可以拨打listFiles()
就可以了。