Как смонтировать зашифрованные файлы расширения 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?


person uncle Lem    schedule 15.01.2013    source источник
comment
Ну, я не нашел, как смонтировать зашифрованный файл obb, но с помощью незашифрованного obb работает нормально.   -  person uncle Lem    schedule 04.02.2013
comment
привет, дядя Лем, здесь я столкнулся с тем же состоянием-21, поэтому, пожалуйста, дайте мне пример, как я могу использовать незашифрованный obb   -  person Krunal Shah    schedule 19.09.2015
comment
@KrunalShah Я создал класс util для управления obb, см. github.com/uncleLem/AndroidUtils/blob/master/src/io/github/ Вы также можете найти некоторые подробности в моем другом ответе: stackoverflow.com/questions/14685315/   -  person uncle Lem    schedule 19.09.2015


Ответы (1)


У меня была та же проблема, и я понял, что много раз Error 21 вызывается разрешениями на доступ к файлам Linux через obb, и проблема в том, что Android не может иметь к нему доступ, поэтому StorageManager запускает Error 21. Когда вы создаете файл .obb, измените разрешения и группу пользователей для файла, например:

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

Затем попробуйте еще раз, у меня сработало.

person brachialste    schedule 19.04.2013
comment
В этом случае user и group являются общими, вы должны попробовать с любым действительным пользователем вашей установки Linux, где вы пытаетесь собрать файлы AOSP. - person brachialste; 20.05.2013