🦁

READ_MEDIA_IMAGESの使い方が間違っていたようなので直した

に公開

株式会社PREVENTでAndroidアプリの開発を行っている千野です。
最近、アプリで使用している権限に見直す機会があったのでなぜなのか・どうしたのかというのを書きました。

発端

Googleからリリースしているアプリについて以下のようなメッセージがきていた。

写真と動画の権限に関するポリシー: 権限の使用がアプリの重要な目的と関連していません
お客様のアプリは READ_MEDIA_IMAGES/READ_MEDIA_VIDEO 権限の使用を許可する条件に準拠していないことが判明しました。

確かに READ_MEDIA_IMAGES は使っていたので使用箇所を再確認することに

どこで使っていたか

弊社アプリの場合

  1. カメラで画像を撮影する
  2. 撮影した画像を端末に保存する
  3. 撮影した画像をサーバーへのアップロード候補リストにいれる
  4. ボタンが押されたらアップロードする候補リストの画像をアップロードする

という機能があり、1 で画像を撮影する前に READ_MEDIA_IMAGES 権限の許可確認を行なっていた。
そもそもなぜこの権限を使っていたのかというと、Android 13 以上にアプリを対応させる際にこの権限がメディアファイルにアクセスする際に必要であるとのことだったので、撮影後に画像を保存させてる機能があるからこの権限は必要そうだと思いこの権限の確認を行なっていた。

https://developer.android.com/about/versions/13/behavior-changes-13?hl=ja#granular-media-permissions

どうしたのか

Googleからメッセージをもらった当初はより詳しく書き足した上で再度申告を行なったり、ライブラリから画像を取得する際に写真選択ツールを使っていなかったのでそれを使うようにして再度審査に出すなどしていたが、やはり READ_MEDIA_IMAGES は使わないでねというメッセージと共に審査がリジェクトされた。
なので、READ_MEDIA_IMAGES を使わずに画像が保存できるか試してみようということで下記を参考にMediaStore API を使用して画像を保存できるように実装を変更した。

https://developer.android.com/training/data-storage/shared/media?hl=ja#storage-permission

変更してみた結果、これまでと同様にメディアファイルへの許可確認ダイアログが出て、撮影した画像の保存ができることがわかったので READ_MEDIA_IMAGES をアプリから削除。
結果審査も通るようになった。

結局何が良くなかったのか

他のアプリが作成したメディアファイルにアクセスする必要がある場合は READ_MEDIA_IMAGES 等の権限を使ってねとのことだったので、端末のメディアファイルは他のアプリが作成したメディアファイルに含まれないから良くなかったのかな...?と推察。

Discussion