1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Android】 メディアの権限やアクセス方法について

Last updated at Posted at 2024-08-17

はじめに

Android側のメディア周りはOSアップデートごとに変更が入って対応が大変なイメージがあります。
最近で一番影響があったのはOS13のアップデートですかね。
OS13以上と未満でメディア領域にアクセスするための権限が異なり、対応していないと写真や動画をアプリに持って来れないといこともあったかもしれません。

今回はメディア領域の権限・アクセス方法について整理していこうと思います。

写真や動画はどこに保存されるのか

そもそもの疑問ですが、カメラアプリ等で撮影した写真や動画はどこに保存されるのか気になり調べてみました。
Androidのストレージの仕様は大きく2つに分かれてそうで、写真や動画は「共有ストレージ」に保存されているようです。

ストレージ種別 内容
アプリ固有のストレージ ・アプリ専用のファイルを保存する場所
・他アプリからはアクセスできない
共有ストレージ ・カメラで撮った写真や動画、スクリーンショットなど、共有可能なメディア ファイルが保存される場所
・他アプリと共有することが可能
・アプリを削除してもファイルは消えない

アクセスに必要な権限まわり

上述の通り、写真や動画等のメディア系のファイルは共有ストレージに保存されることになります。
ただ、「共有ストレージ」とありますが、無条件にアクセスできる場所ではありません。
(インストールしたアプリが勝手に写真とか動画を取得していたら怖いですもんね)

この領域にアクセスする場合は、別途ユーザーから権限を取得する必要があります。
冒頭でも触れましたが、必要になる権限がOSごとに変わるので面倒です。
さらに、OS14以上では「写真や動画への部分的なアクセス」が追加されたため、OS14以上はその考慮・対応も必要になります。

Androidバージョン 権限 説明
Android 9(APIレベル28)以前 READ_EXTERNAL_STORAGE 他アプリが保存したファイルの読み込みに必要
WRITE_EXTERNAL_STORAGE ファイルの書き込みに必要
Android 10(APIレベル29) READ_EXTERNAL_STORAGE 他アプリが保存したファイルの読み込みに必要
WRITE_EXTERNAL_STORAGE 対象範囲別ストレージを無効にした場合ファイルの書き込みに必要
対象範囲別ストレージが有効の場合は不要な権限
Android 11 ~ 12(APIレベル30 ~ 32) READ_EXTERNAL_STORAGE 他アプリが保存したファイルの読み込みに必要
Android 13(APIレベル33) READ_MEDIA_IMAGES 他アプリが保存した画像や写真の読み込みに必要
OS13で追加
READ_MEDIA_VIDEO 他アプリが保存した動画の読み込みに必要
OS13で追加
READ_MEDIA_AUDIO 他アプリが保存した音声ファイルの読み込みに必要
OS13で追加
Android 14(APIレベル33) READ_MEDIA_IMAGES 他アプリが保存した画像や写真の読み込みに必要
READ_MEDIA_VIDEO 他アプリが保存した動画の読み込みに必要
READ_MEDIA_AUDIO 他アプリが保存した音声ファイルの読み込みに必要
READ_MEDIA_VISUAL_USER_SELECTED 写真や動画への部分的なアクセス権を機能させるために必要
OS14で追加

アクセス方法

Androidデベロッパーガイドでは、アクセス方法として写真選択ツールとMedia Storeが推奨されていました。

アクセス方法 メリット デメリット
Media Store ・OSの制限なし
・UIを自作するため、UIを調整できる
・権限が必要
・UIを自作する必要がある
写真選択ツール(Photo Picker) ・権限が不要
・提供されるUIを使うため、UIを自作する必要がない
・OS制限あり(OS11以上の端末で使用可能)
・UIが提供されているものになるため、調整ができない

Android OS13で導入された写真選択ツール(Photo Picker)を使えば、権限まわりを気にせずに手軽にメディアのアクセス機能を実装できそうです。
ただ、UIはカスタマイズ出来なさそう・OS11以上で使用可能 といった制限もあるため、
その辺の考慮し、Media StoreとPhoto Pickerのどっちを使えばいいかは検討が必要になりそうです。

Media Storeを使う場合はメディア権限が必要になるため、メディア権限の適切なコントロールやAndroid側の権限仕様変更等の動向に注意しておく必要がありそうです。

おわりに

メディア周りの権限やアクセス方法についてまとめてみました。
直近でメディア周りは変更が入ることが多く、面倒な部分だなと感じており、今後も新OS発表時には注視していかなきゃなと思っています。
Photo Pickerを使えば権限の考慮は不要になりそうですが、OS11以上でしか使えないとのことなので、、なかなか導入しにくそうですね。

この記事が少しでも参考になれば幸いです!

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?