4

内部ストレージ、外部SD、およびバージョン> = 6.0の場合は内部としてフォーマットされたSDの3種類のストレージを使用するアプリがあります。
を使用して外部 SD パスを取得し、 を使用getExternalFilesDirs()して内部ストレージを取得し、 を使用getFilesDir()して採用 (= 内部) SD パスを取得しEnvironment.getExternalStorageDirectory()ます。
今、空きスペースを取得したい場合は、次のようになります。

StatFs statFs = new StatFs(storageDir);
long blocks = statFs.getAvailableBlocks();
return Formatter.formatFileSize(this, blocks * statFs.getBlockSize()); 

内部ストレージと外部 SD で機能しますが、採用された SD の場合は、追加の SD スペースのない純粋な内部ストレージである内部ストレージと同じ値を返します。

ここで私の質問は次のとおりです。内部 + 採用された SD で構成される空き領域を取得する方法はありますか? getExternalFilesDirs()私が知る限り、マウントされているかどうかに関係なく、常にパス(私がテストしたほとんどのデバイス/storage/emulated/0の絶対パス) が含まれているため、採用された SD が存在するかどうかさえわかりません。Environment.getExternalStorageDirectory()

編集:採用されたSDを代替ストレージとして使用したいので、の空き容量が+ 100MBgetExternalStorageDirectory()より大きいかどうかを確認するだけになり、空き容量がなければ必要ありませんが、それはできませんgetFilesDir()それが機能するはずの方法ですよね?

4

0 に答える 0