PhoneGapを使用していて、ストレージに使用できる空き容量をユーザーに表示しようとしています。
私はこれを機能させるためにさまざまな種類のコードを試しましたが、運がありませんでした。
PhoneGapで空きストレージスペースを表示する方法の実用的な例を誰かが持っていますか?私は現在Androidで作業していますが、phonegapクロスプラットフォームソリューションを探しています。
ありがとうございました。
PhoneGapを使用していて、ストレージに使用できる空き容量をユーザーに表示しようとしています。
私はこれを機能させるためにさまざまな種類のコードを試しましたが、運がありませんでした。
PhoneGapで空きストレージスペースを表示する方法の実用的な例を誰かが持っていますか?私は現在Androidで作業していますが、phonegapクロスプラットフォームソリューションを探しています。
ありがとうございました。
主に自己参照用に、このためのAPIがあります:
cordova.exec(win, fail, "File", "getFreeDiskSpace", []);
この投稿を作成する前に、これを実行する独自の関数を作成し、制限に達するまで決定されたバイト数のファイルシステムを取得して、再帰的に空き領域を想定します。コールバックのため、タイムアウトを0より大きく設定する必要があるかもしれません。私のテストでは、cordova.execの方法と私の方法の違いは非常に小さく、制限の値を下げる精度が向上する可能性があります。
function availableBytes(callback, start, end){
callback = callback == null ? function(){} : callback
start = start == null ? 0 : start
end = end == null ? 1 * 1024 * 1024 * 1024 * 1024 : end //starting with 1 TB
limit = 1024 // precision of 1kb
start_temp = start
end_temp = end
callback_temp = callback
if (end - start < limit)
callback(start)
else{
window.requestFileSystem(LocalFileSystem.PERSISTENT, parseInt(end_temp - ((end_temp - start_temp) / 2)), function(fileSystem){
setTimeout(function(){
availableBytes(callback_temp, parseInt(parseInt(end_temp - ((end_temp - start_temp) / 2))), end_temp)
}, 0)
}, function(){
setTimeout(function(){
availableBytes(callback_temp, start_temp, parseInt(end_temp - ((end_temp - start_temp) / 2)))
}, 0)
})
}
}
次のように使用できます:
availableBytes(function(free_bytes){
alert(free_bytes)
}
@RomainMFで言及されているように、Cordova3.4.1-0.1.0では次のように機能します。
cordova.exec(
function(freeSpace) {
alert('reported free space is ' + freeSpace);
},
function() {
alert('failed');
},
"File", "getFreeDiskSpace", []
);
freeSpace引数は、バイト単位で使用可能なストレージであり、使用できない場合は-1です。
4.0AVDとGalaxyS4で動作し、外部ストレージを正しく報告します(以下を参照)。
deviceready
後にコードを実行することを忘れないでくださいcordova plugin add org.apache.cordova.file
プラグインドキュメント:https ://github.com/apache/cordova-plugin-file/
この呼び出しはドキュメントに記載されていませんが、Java / Androidソースコードを読み取ることができます( iOS / Objective-Cも同様です。チェックイン内部パラメーターが次のようになっているため、この方法でのみ外部ストレージの空き領域を取得できます。falseに設定します(getFreeDiskSpaceを参照) 。
これは、phonegapプラグインを作成する必要があるネイティブコードソリューションではなく、Phonegap自体の仕様の一部ではないと思います。
Androidについては回答できませんが、iOSではアプリがサンドボックス化されているため、空き容量にアクセスできるかどうかわかりません。
Phone Gapでは、それを実行できない場合がありますが、代わりにプラグインを作成して使用できます。問題の解決策につながる可能性のある詳細については、ここをクリックしてください。
Phonegapはこの機能を提供していないと思います。
そのため、Java、ネイティブAndroidSDKによってSDカードから利用可能なスペースを取得する必要があります。
このようなもの:
File sdcard = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(sdcard.getAbsolutePath());
long available = stat.getAvailableBlocks() * (long) stat.getBlockSize();
次に、WebIntentプラグインを使用して、インテントを介して値をPhoneGapに渡します。これで、PhoneGapで利用可能な空きスペースを取得できます。