2013-05-06 1 views
7

は、私は、ファイルシステムにアクセスするためにLocalFileSystem.PERSISTENTはどこにポイントしていますか? PhoneGapので

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

を使用しています。
私のASUSタブレットにはexternal sdcard(私はリムーバブルデバイスを挿入していません)がありませんので、ファイルシステムのルートがinternal sdcardを指していると思います。しかし、私のHTC Desire HDでは、データはexternal sdcardに書き込まれました。 (データはmicroSDカードに保存されているだけなので)
真実は何ですか?私はW3Cの文書に手がかりを見つけることができません。何かが恋しくなるかもしれません。

PS:アンドロイド版はいずれもICS(アイスクリームサンドイッチ)です。

答えて

15

PhoneGapのFileAPIは、HTML5仕様を反映するように設計されていますが、実際はW3Cドキュメントのカスタム実装です。 You can find the docs specific to their API here.ほとんど同じものを使うことができますが、ウェブ上での実装方法とデバイスごとに微妙な違いがあります。ストレージの場所は、これらの1つです。

PhoneGapが永続ストレージをどのように処理するかを知るために、私はCordovaのソースコードを掘り下げなければなりませんでした。 This file here contains the methods used by the PhoneGap FileAPI.関連するコードブロックは871行目から開始します。基本的にAPIはEnvironment.getExternalStorageState()を呼び出します。これがEnvironment.MEDIA_MOUNTEDを返した場合、つまり、removable or non-removable SD cardが格納されている場合、APIによって返されるFileSystemは、マウントされたストレージのルートディレクトリであり、Environment.getExternalStorageDirectory()を使用します。これは、システムによってマウントされた外部ストレージとみなされる内部SDカードと外部SDカードを持つデバイス間で見た動作の違いを説明しています。外部記憶装置のないデバイス、つまり!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)がある場合、返されるFileSystemのルートはContext.getFilesDir()と同様のinternal storageの "data/data/packageName"になります。通常は "data/data/packageName/files" 。

+1

あなたは信じられないほど素晴らしいです!しかし、私は質問があります:862 'fs.put(" root "、getEntry("/data/data/"+ cordova.getActivity()。getPackageName()+"/cache/"));'システムを意味します/ data/data/+〜+/cache /というディレクトリを作成します。 モバイルデバイスを使用する代わりに、ユーザーがウェブ上にいる場合と同様に、ユーザーのためのスペースをストレージスペースとして作成しますか? – Stallman

+0

Btw:どのようにソースコードを見つけるのですか... ...この機能を担うファイルがどれほどあるかは分かりません... – Stallman

+2

はい。その行は特に一時的な記憶域のためのものであるため、キャッシュディレクトリを作成してその行を示します。任意のAndroidアプリ、PhoneGapまたはネイティブの場合、「/ data/data/packageName」は、そのAppのファイルのプライベートスペースとして作成されます。この場合、PhoneGapはそのディレクトリを利用しているだけです。 – MattDavis

関連する問題