2016-08-17 403 views
0

我從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等。對於我在這裏失蹤的任何建議?

回答

0
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()就可以了。