Androidアプリの権限不許可時の警告について

アプリには必要な権限しか与えてはいけませんが、しかし、権限の種類によっては、取り消そうとすると、警告が表示されることがあります。

権限不許可時の警告例

以下は、F-Droidの「付近のデバイス」権限を取り消そうとした場合です。

「このアプリはAndroidの以前のバージョンを対象としています。権限を許可しないと、意図されたとおりに動作しなくなる可能性があります。」

正直なところ、一般ユーザとしては、この警告を見ても何のことか、まるで理解できないでしょう。そして、調べてみると、この警告が出る理由は、かなり複雑です。

結論から

結論としては、このケースの場合には「許可しない」で問題ありません。実際のところは、「やってみないとわからない」が正直なところです。F-Droidは単なるアプリストアなので、「付近のデバイス」権限は必要ありませんし、実際に不許可にしても動作には支障ありません。

 

警告が表示される理由

このような警告が表示される理由は、Androidの歴史に関わります。

  • 古いバージョンのAndroidでは、すべての権限をいっしょくたに許可するか、何も許可しないかだった(おおよそ2015年頃まで)
  • 新しいバージョンAndroidでは、個別の権限を許可・不許可できるようになった(おおよそ2015年以降)
  • 個別の権限管理方式になったAndroidでも、権限が細分化された模様(詳細は今のところ理解できていません)。

古いAndroid用に作成されたアプリは、その当時にあった権限をすべて持つか、すべて持てないかのいずれだったのです。個別の権限のON/OFFはできませんでした。ですから、「古いAndroidでも動きますよ」というアプリについて、個別権限ON/OFFを行うと、この警告が表示されてしまうわけです。

では、アプリを「新しいAndroid用」にすればいいじゃないかと思うかもしれませんが、もちろんこれでは、未だに古いAndroidを持つ人は、このアプリを動作させられなくなってしまいます。

これは、2023年の今年に新たに作られたアプリであろうが、今年新たなバージョンが出たアプリだろうが同じです。古いAndroidで動作させるためには、アプリの中に「古いバージョンでも動きますよ」という指定をするため、この警告が表示されてしまいます。

 

アプリの対応バージョンの確認とAndroidの歴代バージョンについて

以下は少々専門的な話になります。不要な方は無視してください。最初に書いた複雑な理由を説明しています。

 

アプリの対応バージョンの確認

アプリ情報を開き、下の方にスクロールします。

targetSdk, minSdkが対応するAndroidバージョンを表しています。この場合は、25と23です。通常は25、最低でも23が必要という意味のようです。

 

Androidのバージョンの確認

https://feel-log.net/android/developer/api-level/を見ると、このバージョンがどのあたりのものかがわかります。

ここでわかることは、この25, 23というのは、2015, 2016年あたりの、古いものだということです。しかし、当然ながら、この古いAndroidでもアプリを動かせるように、SDKバージョンも古いものを指定しているというわけです。

アプリの権限管理方式は、Marshmalow(23)で大幅に変更されています。Android次期版で大幅に変わるアプリ権限モデルとその管理に概要がありますが、それ以前のAndroidが一括権限管理方式だったのが、23から個別の権限管理方式に変更されたようです。

 

「付近のデバイス権限」の取り下げ

しかし、23というバージョンは権限管理方式が個別に変更された後の話になります。つまり、F-Droidは、新しい権限管理方式を前提として作成されているはずです。なぜ「付近のデバイス」権限を取り下げようとすると警告が出るのでしょうか?

おそらくは、付近の Wi-Fi デバイスに対する新しい実行時の権限の説明が当てはまると思われます。おそらくですが、以前のAndroidバージョン(現在のGraphineOSのバージョン13よりも以前のバージョン)では、この権限が、他の権限と共に自動的に付与されていたため、以前のバージョン用のアプリにおいてこの権限を個別に取り下げると問題が起こるかもしれないということのようです。

※より詳細がわかれば、説明を修正します。