2016年5月30日月曜日

Intentを使ってカメラを起動するときにもCAMERA権限は必要になる?

これバグじゃないんだって

targetSdkVersion を 23 以上にしてますか?

Android 6.0 以降で Dangerous なパーミッションはRuntimeに権限要求する必要がでてきた。Androidユーザーとして嬉しい変更だ。
しかし開発者としては面倒だから targetSdkVersion を上げないでおいているアプリは多いだろう。

たとえば android.permission.CAMERA 権限は Dangerous なパーミッションとして分類されている。なのでカメラアプリを作るには、Runtimeに権限要求をする必要があるぞい。

あ、そうそうAndroid 6.0 以降で Intent を使ってカメラアプリを起動するときにも場合によっては、 android.permission.CAMERA の権限が必要になるぞい。

ということでバグ報告されております

これな https://code.google.com/p/android/issues/detail?id=188073

しかし、Googleの方は「え?バグじゃないよ」と回答。

  • この挙動はAndroidManifest.xmlにCAMERAの権限がある ときだけ起こる
  • ユーザーが設定画面でカメラ権限を無効化できるようにするため

だそう。なるほどね。なるほど……。

ライブラリプロジェクトに使っていないCAMERA権限がある場合は要注意!

実装方法

このように、ユーザーの利便性を考えて権限のON/OFFができるようにしたいって場合は、以下を使おう。

<uses-permission-sdk-23>
https://developer.android.com/guide/topics/manifest/uses-permission-sdk-23-element.html

これを使えば大丈夫ということだ!


ちなみに <uses-permission> には android:maxSdkVersion 属性があるから minSdkVersion もあるのかな〜と思ったらなかった。
https://developer.android.com/guide/topics/manifest/uses-permission-element.html