4

「/sdcard/Android/obb/com.example.obbtest/vid-exp1.obb」の下に拡張ファイルがあります。MP4 ファイルが含まれており、ファイルを読み取るために .obb をマウントしたいと考えています。

これは私がそれをマウントするためにしていることです:

String obbDir = "/sdcard/Android/obb/com.example.obbtest/vid-exp1.obb";

.

StorageManager storage = (StorageManager) getApplicationContext().getSystemService(STORAGE_SERVICE);
storage.mountObb(obbDir, null, listener); 

これはリスナーのコードです:

OnObbStateChangeListener listener = new OnObbStateChangeListener() {
        @Override
            public void onObbStateChange(String path, int state) {
                if (state == OnObbStateChangeListener.MOUNTED) {
                    toastString("Mounted! According to the listener");
                    //Test it with the isObbMounted()
                    if (storage.isObbMounted(obbDir)) {
                        toastString("Efectively mounted!");
                    } else {
                        toastString("Not really :(");
                    }
                    toastString(storage.getMountedObbPath(obbDir));
                } else {
                    tuestameString("NOT mounted according to the listener");
                } 
            }
        };

残念ながら、私が得た出力は、「マウントされました!リスナーによると」というトーストであり、その後に「そうではありません:(」が続きます。 .obb ファイルが存在することを確認しましたが、.obb ファイルがないか、正しい暗号化キーがないと、「マウントされました!...」と表示されません。

OnObbStateChangeListener.MOUNTED が true であるのに isObbMounted(obbDir) が false である理由がわかりません。誰かが私が間違っていることを知っていますか?

4

1 に答える 1

2

Samsung デバイスでこの問題が発生しました。/mnt/sdcard/ディレクトリではなく、別のディレクトリへのシンボリックリンクである場合に発生します(私の場合は/storage/sdcard0.

この場合StorageManager、指定した obb へのパスではなく、シンボリック リンクが解決されたパスを使用しisObbMounted("/mnt/sdcard/my.obb")ます。falseisObbMounted("/storage/sdcard0/my.obb")true

マウントされた obb にアクセスするには、パス obbDir を使用する必要はありませんがonObbStateChange()、最初の引数で渡されたパス: isObbMounted(path).

于 2013-10-18T13:47:15.953 に答える