2013-01-15 110 views
5

我試圖安裝的擴展文件是這樣的:如何安裝加密的APK擴展文件?

final StorageManager storageManager = (StorageManager) getSystemService(STORAGE_SERVICE); 
    String obbPath = Environment.getExternalStorageDirectory() + "/Android/obb"; 
    final String obbFilePath = obbPath + "/com.example/main.1.com.example.obb"; 
    storageManager.mountObb(obbFilePath, "SecretKey", new OnObbStateChangeListener() { 
     @Override 
     public void onObbStateChange(String path, int state) { 
      super.onObbStateChange(path, state); 
      if (state == OnObbStateChangeListener.MOUNTED) { 
       onObbMounted(); 
      } else { 
       Log.d("##", "Path: " + path + "; state: " + state); 
      } 
     } 
    }); 

但在運行時我得到國家21:ERROR_COULD_NOT_MOUNT:

Path: /storage/sdcard0/Android/obb/com.example/main.1.com.example.obb; state: 21 

我已經添加了這一點:

File f = new File(obbFilePath); 
    if (!f.exists()) { 
     Log.e("OBB", "FILE NOT FOUND!!!"); 
    } 

logcat說這個文件存在。我不知道,爲什麼我能得到這個狀態21?

+0

那麼,我還沒有找到如何安裝加密的obb文件,但使用非加密的obb工作正常。 –

+0

hello叔叔Lem,在這裏我面臨同樣的狀態-21,所以請給我一個例子我怎樣才能使用非加密的obb –

+1

@KrunalShah我創建了util類來管理obb,請參閱https://github.com/uncleLem /AndroidUtils/blob/master/src/io/github/unclelem/androidutils/utils/ObbExpansionsManager.java你也可以在我的其他答案中找到一些細節:http://stackoverflow.com/questions/14685315/how-to-create -ob-files-using-jobb-tool-android/14687592#14687592 –

回答

2

我有同樣的問題,我想通AOUT,很多時候Error 21被Linux文件的權限在OBB堆砌造成的,問題是,Android的不能訪問它,因此StorageManager啓動Error 21。當您創建.obb文件時,將權限和用戶組更改爲文件,如下所示:

$chmod 664 <obb-filename>.obb  
$chown user:group <obb-filename>.obb 

然後再試一次,爲我工作。

+1

在這種情況下,'user'和'group'是通用的,您必須嘗試使用​​您的Linux安裝的任何有效用戶,您試圖使用AOSP文件。 – brachialste