web-dev-qa-db-ja.com

Android外部ストレージの絶対パスを取得しています

一部のファイルをダウンロードして、電話またはタブの内部ストレージに保存したい。 Samsung Galaxy Note 2とGalaxy Tab 10.1で試してみました。 /storage/sdcard0/を使用するとコードは正常に実行されますが、Galaxy Nexus 3を使用するとコードは失敗します。

フィーまたはタブの内部ストレージの絶対パスを取得したい 'Absolute Path

可能であれば、どうすれば可能ですか?

10

/ storage/sdcard0 /を使用するとコードは正常に実行されますが、Galaxy Nexus 3を使用するとコードが失敗します。

_/storage/sdcard0/_は内部ストレージではありません。外部ストレージです。

(ところで、「Galaxy Nexus 3」という名前のデバイスはないので、単に「Galaxy Nexus」を意味していると思います)

アプリの内部ストレージ上の場所を見つけるには、ContextActivityなど)で呼び出されるgetFilesDir()を使用して、Fileオブジェクトを取得します。

アプリ固有のexternalストレージの場所を取得するには、ContextActivityなど)で呼び出されるgetExternalFilesDir()を使用して、Fileオブジェクトを取得します。

一般的な種類のファイル(映画など)の標準外部ストレージ上の場所を取得するには、EnvironmentgetExternalStoragePublicDirectory()を使用します。

rootexternalストレージを取得するには、EnvironmentgetExternalStorageDirectory()を使用します。ただし、開発者がファイルをランダムな場所に置くことを奨励しているため、これは最近のずさんなプログラミングと見なされています。

29
CommonsWare

コードから_/storage/sdcard0/_パスを取得するためにEnvironment.getExternalStorageDirectory()を使用できないのはなぜですか?

権限も追加する必要があります

_<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
_
10
Desu

見つかった解決策は、最初にエミュレータを編集することです:

  1. Android Virtual Device Managerに移動し、エミュレータを編集します
  2. 尊敬されるエミュレータのSD dカードに100 MBと設定します。
  3. エミュレータを保存して閉じ、開始します

それは私のために働いた、アプリはもはやエラーを出さず、正常に働いています。

1
madmaskd