最終更新:2019-01-23 (水) 11:49:23 (1882d)
Android/外部ストレージ
概要
- 共有外部ストレージにパブリック データを保存します
- 外部ストレージに保存されたファイルは誰でも読み取り可能です
- すべての Android 互換端末は、ファイルの保存先として共有の「外部ストレージ」をサポートしています。
- これは、リムーバブル ストレージ メディア(SDカードなど)か、(取り外しできない)内部ストレージです。 外部ストレージに保存されたファイルは誰でも読み取り可能です。
- また、USB マスストレージからパソコンへのファイル転送を有効にすると、ユーザーがファイルを変更することもできます。
パーミッション
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.READ_EXTERNAL_STORAGE?
確認
- Environment.getExternalStorageState?()
Environment.getExternalStorageDirectory()
- 外部ストレージのディレクトリを取得する。
- ただし、直接ここへ何かを置くべきではない。
Environment.getExternalStoragePublicDirectory(String)
- getExternalStoragePublicDirectory?(Environment.DIRECTORY_DOWNLOADS)):
- /storage/emulated/0/Download
- 外部ストレージ領域の最上位パス。
プライベートファイル
Context.getExternalFilesDir()
Context.getExternalFilesDirs?()
- Android 4.4〜
- /storage/emulated/0/Android/data/{パッケージ名}/files
- アプリ固有の外部ストレージ領域。
- アプリ固有のデータを保存するという点ではContext.getFilesDir()と同様だが、以下の2点が重要な違い
- 常に利用可能というわけではない
- WRITE_EXTERNAL_STORAGE?権限があれば他アプリからの書き込みが可能
Context.getExternalCacheDir()
実際のパス
複数ユーザ時 例 Context.getExternalFilesDir Android/storage/emulated/ユーザ番号/Android/data/パッケージ名/files Android/storage/emulated/0/Android/data/パッケージ名/files? Context.getExternalCacheDir Android/storage/emulated/ユーザ番号/Android/data/パッケージ名/cache? Android/storage/emulated/0/Android/data/パッケージ名/cache? Environment.getExternalStorageDirectory Android/storage/emulated/ユーザ番号 Android/storage/emulated/0 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS?) Android/storage/emulated/ユーザ番号/Download? Android/storage/emulated/0/Download?