デバイスの内部および外部スペースの量を取得したいのですが、StackOverflow に関するいくつかの投稿を行った後、これは簡単であることがわかりました。これを使用して内部スペースの量を取得できます:
StatFs sfsInternal = new StatFs(Environment.getRootDirectory().getAbsolutePath());
return Long.valueOf(sfsInternal.getBlockCount()) * Long.valueOf(sfsInternal.getBlockSize());
...そして、これを使用して外部スペースの量を取得できます:
StatFs sfsExternal = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
return Long.valueOf(sfsExternal.getBlockCount()) * Long.valueOf(sfsExternal.getBlockSize());
「内部」ストレージについて読んだとき、それはデバイスの取り外し不可能なオンボード ストレージであり、「外部」はリムーバブル フラッシュ カード ストレージであると想定しましたが、これは完全には当てはまりません。
Samsung デバイス (Galaxy Note 2) では、内部ストレージの大部分が外部として表示されることがわかりました。これは、同じことを議論する答えです。https://stackoverflow.com/a/12087556/304151
Samsung の Galaxy デバイスのエッジ ケースを考慮しながら、内部ストレージ (オンボードおよび非リムーバブル) の量と外部ストレージ (フラッシュおよびリムーバブル) の量を取得するにはどうすればよいですか。このシナリオの完全な実用的なソリューションを提供する StackOverflow に関する回答はまだ見つかりません。私のコードは API レベル 17 用です。
ありがとう。