9

PhoneGap では、

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);

ファイルシステムにアクセスします。
私の ASUS タブレットにはexternal sdcard(リムーバブル デバイスを挿入していない) がないため、ファイル システムのルートはinternal sdcard. しかし、私の HTC Desire HD では、データはexternal sdcard. (データはmicroSDカードにあるだけなので。)
では、真実は何ですか?W3C ドキュメントに手がかりが見当たりません。何か見落としている可能性があります...

PS: どちらの Android バージョンも ICS (アイス クリーム サンドイッチ) です。

4

1 に答える 1

16

PhoneGap の FileAPI は、HTML5 仕様を反映するように設計されていますが、実際には W3C ドキュメントのカスタム実装です。 API に固有のドキュメントはこちらにあります。 ほとんど同じように使用できますが、Web での実装方法とデバイスごとの実装方法には微妙な違いがあります。保管場所はその一つです。

PhoneGap が永続ストレージをどのように処理するかを調べるために、Cordova のソース コードを掘り下げる必要がありました。 このファイルには、PhoneGap FileAPI で使用されるメソッドが含まれています。関連するコード ブロックは 871 行目から始まります。基本的に、API は を呼び出しますEnvironment.getExternalStorageState()。これが を返した場合、つまり、ストレージ用のリムーバブルまたは非リムーバブル SD カードEnvironment.MEDIA_MOUNTEDがあることを意味し、API によって返された FileSystem は、マウントされたストレージのルート ディレクトリであり、. これは、システムによってマウントされた外部ストレージと見なされる、内部 SD カードと外部 SD カードを備えたデバイス間で見られた動作の違いを説明しています。外部ストレージのないデバイスに遭遇した場合、つまり、返された FileSystem のルートは "data/data/packageName" になります。Environment.getExternalStorageDirectory()!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)internal storageの呼び出しに似てContext.getFilesDir()います。これは通常、「data/data/packageName/files」のようなものを返します。

于 2013-05-06T15:26:02.410 に答える