内部ストレージ、外部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()
それが機能するはずの方法ですよね?