2013-01-15 77 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