从加密的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()就可以了。