暗黙的な<uses-permission>

2018/01/21

Androidアプリで特定の機能を利用する場合、AndroidManifest.xmlに<uses-permission>を記述します。一番よく使うのはインターネット通信でしょうか。

<uses-permission android:name="android.permission.INTERNET" />

ところで、一部の<uses-permission>は暗黙的に<uses-feature>を宣言します。<uses-feature>は特定の機能が必須であることを意味するので、その機能がない端末にはインストールすることができなくなります。

例として<uses-feature> | Android Developersの表2からCAMERAを抜粋します。

カテゴリパーミッション暗黙的な機能要件
カメラCAMERAandroid.hardware.camera および android.hardware.camera.autofocus

つまり、何も考えずにCAMERAのパーミッションを宣言すると、「このアプリはカメラを使うよ」じゃなくて「このアプリはオートフォーカス対応のカメラがついている端末じゃないと使えないよ」という意味になっちゃうんですね。

「アプリにカメラを使う機能はあるけど、カメラは必須じゃない」としたい場合は非必須であることを明示的に宣言してあげる必要があります。

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

対象となるカテゴリはBluetooth, カメラ, 場所, マイク, 電話, Wi-Fiです。カメラと場所が要注意ですかねー。

参考URL




関連(するかもしれない)記事


おススメ