5

この方法で拡張ファイルをマウントしようとしました:

    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?

4

1 に答える 1

3

私は同じ問題を抱えていましError 21た.obbに対するLinuxファイルのアクセス許可によって何度も発生していることがわかった.問題は、AndroidがそれにアクセスできないStorageManagerためError 21. .obb ファイルを作成するときは、権限とユーザー グループをファイルに次のように変更します。

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

それからもう一度やり直してください。

于 2013-04-19T15:49:12.780 に答える