はじめに
Android14が出ようとしていますが、これまでパーミッションに関して様々な変化がありましたね。
パーミッション関連の中でも写真などのメディアへのアクセスの仕方は特に色々と変化があったように感じます。
そこで今回はその変化に関して振り返りも兼ねて纏めてみようと思います。
Android6未満
取得が必要なパーミッション:READ_EXTERNAL_STORAGE
思えばこのパーミッションには長い間お世話になってきました。
私がアプリエンジニアに転身した時はAndroid4系が幅を利かせている時期でしたが、この頃からお世話になっているもはや長年のパートナー的存在です。
Android6未満ではマニフェストに記述しておけば全てインストール前に確認するという方式が取られており、今の現状から考えるとあり得ないくらい緩かったですね(笑)
楽ではありましたが、今考えてみるとこの頃は本当に色々緩々でAndroidがまだまだ発展途上であった事をうかがえるかと思います。
Android6〜Android12
取得が必要なパーミッション:READ_EXTERNAL_STORAGE
取得が必要なパーミッションは変わらず上記ですが、Android6からかなりパーミッションの扱いが変わりましたね。
まさにこのタイミングがパーミッションの大きな転換点となったといっても過言ではありません。
ユーザーへの許可を取る仕組みが必須となり、今まで記述しておけばいいだけが一気に厳しくなり、慌ただしい状況となったのが良い思い出です。
今考えればアクセスしても良いかユーザーに問うのは当然だと思えますが、こういった変化は受け入れられるまでに時間がかかるもので、特に非エンジニア層に仕様として浸透するのは少し時間がかかっていましたね。
Android12まであまり変化がなかったのもこの変化が受け入れられるタイミングを見越しての期間だったのかもしれませんね。
Android13
取得が必要なパーミッション:READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO
永らく変化のなかったメディアアクセスのパーミッションですが、Android13から大きな変化を迎えます。
今まではREAD_EXTERNAL_STORAGEひとつで写真、動画、音声へアクセスできていましたが、Android13からパーミッションが分割されるようになりました。
この対応は必須でAndroid13からはこちらの取得方式へ必ず切り替える必要があります。
これにより取得する際のロジックもAndroid13とそれ以下バージョンで取得の仕方を変える必要があります。
処理としては手間がかかりますが、適切なものだけを取得するように促すのはセキュアでユーザーを守るための施策といえますね。
Android14
取得が必要なパーミッション:READ_MEDIA_VISUAL_USER_SELECTED
2023/7/30の時点で最新はこのバージョンになります。
Android13同様にAndroid14でも大きな変化が見受けられます。
前バージョンで取得するパーミッションを分割し取得するようになりましたが、今度はユーザーがより細かくメディアを選択し許可する仕組みを導入しています。
その為分割されたパーミッションは13以前のように統合され上記一つに纏められています。
ですが今回、Android13の時のように上記を追加しないとアクセスができないということではなく、Android13の定義を行なっていれば自動でAndroid14以降を対象に選択式のパーミッション取得方式へ切り替わるようです。
ただし今後は上記をメインで使用していくようになることが考えられる為、Android14からは上記で取得するように改修するのが綺麗かと思います。
さいごに
今回はパーミッションの変化だけに着目し、ロジックに関する変化は置き去りにしていますが、こうして時系列で見ていくとAndroid自体の成長を感じられて面白いですね。
古いバージョンから本当にたくさんの改修を経て今があると実感できます。
また機会があればこういった形で機能の変化を追ってみようと思います。