【Android】getExternalStorageDirectory()について②

【Android】getExternalStorageDirectory()について②
作ればわかる!AndroidプログラミングKotlin対応10のサンプルで学ぶAndroidアプリ開発“実践”入門[金宏和實]

作ればわかる!Androidプログラミング Kotlin対応 10の実践サンプルで学ぶAndroidアプリ開発入門 [ 金宏 和實 ]

ながれです。

前回、getExternalStorageDirectory()はAndroid 10から使えなくなったというお話をしました。

ではどうすれば良いか?というのが本記事の内容となります。

getExternalStorageDirectory()の代替手段

公式からは、getExternalStorageDirectory()の代替手段として3つの手段が紹介されています。

Context#getExternalFilesDir(String)

MediaStore

Intent#ACTION_OPEN_DOCUMENT.

上記3について、それぞれ詳しく見ていきましょう。

 

Context#getExternalFilesDir(String)

以下のようなパスが取得できます。

/storage/emulated/0/Android/data/{パッケージ名}/files

要は、アプリ固有の領域へのファイルパスですね。

アプリが削除されると、アプリ固有のフォルダも削除されます。

これではgetExternalStorageDirectory()の代替手段とは言えませんね…

(まぁAndroid的には、本来アプリが作成するファイルなどをここに保存するのが望ましいようですが)

MediaStore

ファイルパスを取得する、というよりはファイルにアクセスする手段ですが、MediaStoreは外部ストレージにアクセス可能です。他アプリが作成したファイルパスなどにアクセスできます。

ただし、使えるファイルは画像ファイル・音楽ファイル・動画ファイルのみのようなのでご注意ください。

詳しい使い方は、以下公式サイトをご参照ください。

https://developer.android.com/reference/android/provider/MediaStore.html

 

Intent#ACTION_OPEN_DOCUMENT

こちらもファイルにアクセスする手段ですが、外部ストレージにアクセス可能です。

StorageAccessFrameworkと呼ばれるフレームワークを使用して、外部ストレージにファイルにアクセスできます。

こちらは、MediaStoreが使えないファイルを使用することができます。

詳しい使い方は、以下公式サイトをご参照ください。

https://developer.android.com/guide/topics/providers/document-provider?hl=ja

【ファーウェイ公式】純正端末カバープレゼント★なくなり次第終了 Huawei MediaPad M5 lite 8″ Wi-Fiモデル 32GB (スペースグレー) Touch 1080p対応 Android 9+EMUI 9.0 Harman Kardon タブレット端末 液晶 タブレット本体【送料無料】

まとめ

以前、お仕事でAndroidアプリ開発に携わった際はAndroid 9だったためgetExternalStorageDirectory()を使用していました。

しかし、Android 10では非推奨となったことから、Androidアプリ内でファイルなどを作成する場合はアプリ固有の領域に保存するのが基本、ということを知らなかった自分が恥ずかしいです…

勉強しないと…

Java(Android)カテゴリの最新記事