私は、アプリケーションのインストールまたは削除時にデバイス上で使用可能な記憶領域を確認するために次のコードを使用しています。モニタには正しい領域が印刷されません。このコードは、アプリケーションがいつ削除されるかインストールされているかをリスンするブロードキャストレシーバーで実行されます。私はここにこのコードをテストした デバイスの記憶領域が正しく動作していないと判断しました:android
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getAvailableBlocks();
long megAvailable = bytesAvailable/1048576;
System.out.println("Megs Available :"+megAvailable);
は、私が得た結果である:
私は12437メガバイト(これは変更されるだけの数があることから、ちょうど37メガバイトをしましょう)で開始しました。
私は12メガバイトだったAPPを追加しました
可能な37メガバイトは(減少している必要があります)利用できる41メガバイトまで行ってきました... 1メガバイトだったAPPを追加しました...利用できる41メガバイトは15メガバイトまで行ってきました利用できる私は、1メガバイトたアプリを削除した
(多分この1つは正常に働いていた)私が利用できる15メガバイトは14メガバイトまで行ってきました...約1 MBでしたAPPを追加しました
(あまり減少)... 14MB可14MB利用可
削除済み2メガバイトだったアプリが... 14メガバイトは、私は1メガバイトたアプリを削除した14メガバイト
に宿泊しました...利用できる14メガバイトは、利用可能な19メガバイトまで行ってきました、私は12メガバイト.. 19メガバイトが利用可能であったアプリを削除した
19MBにとどまった...このテストを行った後、私は削除またはインストールとアプリとの間に5秒の遅延を追加してみました。デバイスの記憶域を取得しても数字はまだ間違っていました。
これに加えて、私のプログラムに応じた私の利用可能なスペースの合計は常に約12.4 GBで、私の電話設定では私には12.1 GBがあると書かれています。
より正確な数値を取得する方法はありますか?またはこの方法は信頼性があまり高くありませんか?または電話のキャッシュデータが数字を信頼できないものにしていますか?
API 9-17では「externalStoragesPaths.getFreeSpace()」を、API 18以降では「externalStoragesPaths.getPath()」を実行しましたか?それとも、「ファイル」を使うつもりなのですか? – Natalie
私の編集された答えをチェックしてください、今私はそれをより正確かつ明確にしました。 – floyd
このメソッドは、私の質問に投稿したメソッドと同じ結果を与えています...たぶん、1つのアプリケーションがダウンロードまたは削除されるたびに正確なMBストレージ値を取得することはできません。 – Natalie