一部のファイルをダウンロードして、電話またはタブの内部ストレージに保存したい。 Samsung Galaxy Note 2とGalaxy Tab 10.1で試してみました。 /storage/sdcard0/
を使用するとコードは正常に実行されますが、Galaxy Nexus 3
を使用するとコードは失敗します。
フィーまたはタブの内部ストレージの絶対パスを取得したい 'Absolute Path
。
可能であれば、どうすれば可能ですか?
/ storage/sdcard0 /を使用するとコードは正常に実行されますが、Galaxy Nexus 3を使用するとコードが失敗します。
_/storage/sdcard0/
_は内部ストレージではありません。外部ストレージです。
(ところで、「Galaxy Nexus 3」という名前のデバイスはないので、単に「Galaxy Nexus」を意味していると思います)
アプリの内部ストレージ上の場所を見つけるには、Context
(Activity
など)で呼び出されるgetFilesDir()
を使用して、File
オブジェクトを取得します。
アプリ固有のexternalストレージの場所を取得するには、Context
(Activity
など)で呼び出されるgetExternalFilesDir()
を使用して、File
オブジェクトを取得します。
一般的な種類のファイル(映画など)の標準外部ストレージ上の場所を取得するには、Environment
でgetExternalStoragePublicDirectory()
を使用します。
rootのexternalストレージを取得するには、Environment
でgetExternalStorageDirectory()
を使用します。ただし、開発者がファイルをランダムな場所に置くことを奨励しているため、これは最近のずさんなプログラミングと見なされています。
コードから_/storage/sdcard0/
_パスを取得するためにEnvironment.getExternalStorageDirectory()
を使用できないのはなぜですか?
権限も追加する必要があります
_<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
_
見つかった解決策は、最初にエミュレータを編集することです:
それは私のために働いた、アプリはもはやエラーを出さず、正常に働いています。