【问题标题】:Reading files from encrypted OBB file从加密的 OBB 文件中读取文件
【发布时间】:2023-03-28 06:10:01
【问题描述】:

我从 JOBB 工具创建了一个加密的 OBB 文件,我正在尝试访问其中的文件,有一些图像“image1.jpg,image2.jpg”等。到目前为止,我能够成功安装它:

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 等中。对我在这里缺少的内容有什么建议吗?

【问题讨论】:

    标签: android encryption apk-expansion-files


    【解决方案1】:
    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()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多