2

インターネットからアプリにデータをダウンロードしています。内部メモリを指定 (=Environment.getExternalStorageDirectory()) すると、「容量が足りない」という問題が発生する場合があります。SDカードのマウントアドレスは常に電話ごとに異なるため、ダウンロードしたデータを保存する場所をユーザーが選択できるようにしたいと思います。使用可能なすべてのストレージオプションを取得する方法はありますか? (通常、内部メモリまたは挿入された SD カードのどちらかを選択したいと思います)。

ありがとう

4

1 に答える 1

8

以下のコードを確認してください。

利用可能な内部ストレージ メモリを計算する

StatFs stat = new StatFs(Environment.getDataDirectory().getPath());
long bytesAvailable = (long)stat.getFreeBlocks() * (long)stat.getBlockSize();
long megAvailable = bytesAvailable / 1048576;

合計内部ストレージ メモリを計算する

StatFs stat = new StatFs(Environment.getDataDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
long megAvailable = bytesAvailable / 1048576;

利用可能な外部ストレージ メモリを計算する

StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getFreeBlocks() * (long)stat.getBlockSize();
long megAvailable = bytesAvailable / 1048576;

外部ストレージの合計メモリを計算する

StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
long megAvailable = bytesAvailable / 1048576;

注:まず、利用可能な内部メモリを計算し、ファイルをダウンロードしたい場所をユーザーに示す必要があります。

于 2013-02-01T11:22:55.520 に答える