今回のパミッション周りの一つの大きな特徴として、今まで何も役に立っていなかったパミッショングループが、大抜擢され、重要な役割を得るようになった事があげられます。

Android M Developer Previewのパミッション周りの変更解説として、今回はパミッショングループについて解説したいと思います。

ブログの過去の記事「Android OS 4.2のPermission Groupの変更点」を見てみると、この時パミッショングループの大幅改編がされ、12個だったパミッショングループが24個になり大幅変更、しかしながら以下のような記載が…

「これで、何かの具体的な意味はなくなり、パミッショングループは只の情報でしかなくなりました。」

元々殆ど意味がなかったんですが、整理してさらに意味がなくなったので時期変更に向けての準備か?なんてうがった予想も立てたのですが、そのまま放置されつづけ、今回仕様変更となりました。
大抜擢されたのですが、なんと、大量にパミッショングループが削除されてしまいました。

抹殺されたパミッショングループ達

android.permission-group.ACCESSIBILITY_FEATURES
android.permission-group.AFFECTS_BATTERY
android.permission-group.APP_INFO
android.permission-group.AUDIO_SETTINGS
android.permission-group.BLUETOOTH_NETWORK
android.permission-group.COST_MONEY
android.permission-group.DEVELOPMENT_TOOLS
android.permission-group.DEVICE_ALARMS
android.permission-group.DISPLAY
android.permission-group.HARDWARE_CONTROLS
android.permission-group.MESSAGES
android.permission-group.NETWORK
android.permission-group.PERSONAL_INFO
android.permission-group.PHONE_CALLS
android.permission-group.SCREENLOCK
android.permission-group.STATUS_BAR
android.permission-group.STORAGE
android.permission-group.SYNC_SETTINGS
android.permission-group.SYSTEM_CLOCK
android.permission-group.SYSTEM_TOOLS
android.permission-group.VOICEMAIL
android.permission-group.WALLPAPER
android.permission-group.WRITE_USER_DICTIONARY

計23個リストラされました。

そして生き残ったパミッショングループ8個

android.permission-group.ACCOUNTS
android.permission-group.BOOKMARKS
android.permission-group.CALENDAR
android.permission-group.CAMERA
android.permission-group.LOCATION
android.permission-group.MICROPHONE
android.permission-group.SOCIAL_INFO
android.permission-group.USER_DICTIONARY

そして追加されたパミッショングループ4個

android.permission-group.CONTACTS
android.permission-group.PHONE
android.permission-group.SENSORS
android.permission-group.SMS

もう過去は捨てて再設計です。潔いとも言えますが、いっそ、パミッショングループを継続使用するんじゃなくて、新しいの作ればいいのにと思うぐらいです。

パミッショングループと所属するパミッション

さて、12個に整理されたパミッショングループですが、前回の超訳したAndroidPermissionでは8個しか紹介されてません。

残りの4個は以下のものです。
android.permission-group.ACCOUNTS
android.permission-group.BOOKMARKS
android.permission-group.SOCIAL_INFO
android.permission-group.USER_DICTIONARY

抜けがあったので、今回は全てのパミッショングループについて、どのパミッションが所属しているかを確認してみました。

 

Permission Group Permissions
android.permission-group.CALENDAR
  • android.permission.READ_CALENDAR
  • android.permission.WRITE_CALENDAR
android.permission-group.CAMERA
  • android.permission.CAMERA
android.permission-group.CONTACTS
  • android.permission.READ_CONTACTS
  • android.permission.WRITE_CONTACTS
  • android.permission.READ_PROFILE
  • android.permission.WRITE_PROFILE
android.permission-group.LOCATION
  • android.permission.ACCESS_FINE_LOCATION
  • android.permission.ACCESS_COARSE_LOCATION
android.permission-group.MICROPHONE
  • android.permission.RECORD_AUDIO
android.permission-group.PHONE
  • android.permission.READ_PHONE_STATE
  • android.permission.CALL_PHONE
  • android.permission.READ_CALL_LOG
  • android.permission.WRITE_CALL_LOG
  • com.android.voicemail.permission.ADD_VOICEMAIL
  • android.permission.USE_SIP
  • android.permission.PROCESS_OUTGOING_CALLS
android.permission-group.SENSORS
  • android.permission.BODY_SENSORS
  • android.permission.USE_FINGERPRINT
android.permission-group.SMS
  • android.permission.SEND_SMS
  • android.permission.RECEIVE_SMS
  • android.permission.READ_SMS
  • android.permission.RECEIVE_WAP_PUSH
  • android.permission.RECEIVE_MMS
  • android.permission.READ_CELL_BROADCASTS
android.permission-group.BOOKMARKS
  • com.android.browser.permission.READ_HISTORY_BOOKMARKS
  • com.android.browser.permission.WRITE_HISTORY_BOOKMARKS
android.permission-group.SOCIAL_INFO
  • android.permission.WRITE_SOCIAL_STREAM
android.permission-group.USER_DICTIONARY
  • android.permission.READ_USER_DICTIONARY
  • android.permission.WRITE_USER_DICTIONARY
android.permission-group.ACCOUNTS
  • android.permission.AUTHENTICATE_ACCOUNTS
  • android.permission.GET_ACCOUNTS
  • android.permission.MANAGE_ACCOUNTS
  • android.permission.USE_CREDENTIALS
  • com.google.android.googleapps.permission.GOOGLE_AUTH
  • com.google.android.googleapps.permission.GOOGLE_AUTH.OTHER_SERVICES
  • com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser
  • com.google.android.googleapps.permission.GOOGLE_AUTH.adsense
  • com.google.android.googleapps.permission.GOOGLE_AUTH.adwords
  • com.google.android.googleapps.permission.GOOGLE_AUTH.ah
  • com.google.android.googleapps.permission.GOOGLE_AUTH.android
  • com.google.android.googleapps.permission.GOOGLE_AUTH.androidsecure
  • com.google.android.googleapps.permission.GOOGLE_AUTH.blogger
  • com.google.android.googleapps.permission.GOOGLE_AUTH.cl
  • com.google.android.googleapps.permission.GOOGLE_AUTH.cp
  • com.google.android.googleapps.permission.GOOGLE_AUTH.dodgeball
  • com.google.android.googleapps.permission.GOOGLE_AUTH.doraemon
  • com.google.android.googleapps.permission.GOOGLE_AUTH.finance
  • com.google.android.googleapps.permission.GOOGLE_AUTH.gbase
  • com.google.android.googleapps.permission.GOOGLE_AUTH.geowiki
  • com.google.android.googleapps.permission.GOOGLE_AUTH.goanna_mobile
  • com.google.android.googleapps.permission.GOOGLE_AUTH.grandcentral
  • com.google.android.googleapps.permission.GOOGLE_AUTH.groups2
  • com.google.android.googleapps.permission.GOOGLE_AUTH.health
  • com.google.android.googleapps.permission.GOOGLE_AUTH.ig
  • com.google.android.googleapps.permission.GOOGLE_AUTH.jotspot
  • com.google.android.googleapps.permission.GOOGLE_AUTH.knol
  • com.google.android.googleapps.permission.GOOGLE_AUTH.lh2
  • com.google.android.googleapps.permission.GOOGLE_AUTH.local
  • com.google.android.googleapps.permission.GOOGLE_AUTH.mail
  • com.google.android.googleapps.permission.GOOGLE_AUTH.mobile
  • com.google.android.googleapps.permission.GOOGLE_AUTH.news
  • com.google.android.googleapps.permission.GOOGLE_AUTH.notebook
  • com.google.android.googleapps.permission.GOOGLE_AUTH.orkut
  • com.google.android.googleapps.permission.GOOGLE_AUTH.panoramio
  • com.google.android.googleapps.permission.GOOGLE_AUTH.print
  • com.google.android.googleapps.permission.GOOGLE_AUTH.reader
  • com.google.android.googleapps.permission.GOOGLE_AUTH.sierra
  • com.google.android.googleapps.permission.GOOGLE_AUTH.sierraqa
  • com.google.android.googleapps.permission.GOOGLE_AUTH.sierrasandbox
  • com.google.android.googleapps.permission.GOOGLE_AUTH.sitemaps
  • com.google.android.googleapps.permission.GOOGLE_AUTH.speech
  • com.google.android.googleapps.permission.GOOGLE_AUTH.speechpersonalization
  • com.google.android.googleapps.permission.GOOGLE_AUTH.talk
  • com.google.android.googleapps.permission.GOOGLE_AUTH.wifi
  • com.google.android.googleapps.permission.GOOGLE_AUTH.wise
  • com.google.android.googleapps.permission.GOOGLE_AUTH.writely
  • com.google.android.googleapps.permission.GOOGLE_AUTH.youtube
  • com.google.android.providers.gsf.permission.READ_GSERVICES

※一般のアプリでは使用できないprotection level-signature(システム署名)のパミッションは除外しました。

解説ページに4つのパミッショングループが記載されていなかったのは、com.google系のパミッションが殆ど所属するからあまり書きたくなかったのか、紙面の都合からなのか、まぁそんな感じですが、特に意味はなさそうでした。正式リリース後に再確認すればいい感じです。

グループに所属しないパミッション

Android Developer Previewのパミッショングループと、それに所属するパミッションを洗い出しましたが、パミッショングループに所属しないパミッションが52個ありました。

大量なので、ここに記載するか迷いましたが、後で自分が見るのに便利なので書いておきます。

 

name protectionLevel
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS normal
android.permission.ACCESS_NETWORK_STATE normal
android.permission.ACCESS_WIFI_STATE normal
android.permission.ACCESS_WIMAX_STATE normal
android.permission.BLUETOOTH dangerous
android.permission.BLUETOOTH_ADMIN dangerous
android.permission.BROADCAST_STICKY normal
android.permission.CHANGE_NETWORK_STATE normal
android.permission.CHANGE_WIFI_MULTICAST_STATE dangerous
android.permission.CHANGE_WIFI_STATE dangerous
android.permission.CHANGE_WIMAX_STATE dangerous
android.permission.CLEAR_APP_CACHE dangerous
android.permission.DISABLE_KEYGUARD normal
android.permission.EXPAND_STATUS_BAR normal
android.permission.FLASHLIGHT normal
android.permission.GET_PACKAGE_SIZE normal
android.permission.GET_TASKS normal
android.permission.INTERNET normal
android.permission.KILL_BACKGROUND_PROCESSES normal
android.permission.MODIFY_AUDIO_SETTINGS normal
android.permission.NFC normal
android.permission.PERSISTENT_ACTIVITY normal
android.permission.READ_EXTERNAL_STORAGE normal
android.permission.READ_INSTALL_SESSIONS normal
android.permission.READ_SYNC_SETTINGS normal
android.permission.READ_SYNC_STATS normal
android.permission.RECEIVE_BOOT_COMPLETED normal
android.permission.REORDER_TASKS normal
android.permission.RESTART_PACKAGES normal
android.permission.SET_TIME_ZONE normal
android.permission.SET_WALLPAPER normal
android.permission.SET_WALLPAPER_HINTS normal
android.permission.SUBSCRIBED_FEEDS_READ normal
android.permission.SUBSCRIBED_FEEDS_WRITE dangerous
android.permission.SYSTEM_ALERT_WINDOW dangerous
android.permission.TRANSMIT_IR normal
android.permission.VIBRATE normal
android.permission.WAKE_LOCK normal
android.permission.WRITE_EXTERNAL_STORAGE normal
android.permission.WRITE_SETTINGS normal
android.permission.WRITE_SYNC_SETTINGS normal
com.android.alarm.permission.SET_ALARM normal
com.android.launcher.permission.INSTALL_SHORTCUT dangerous
com.android.launcher.permission.UNINSTALL_SHORTCUT dangerous
com.motorola.permission.RECEIVE_APP_DIRECTED_SMS normal
com.google.android.gms.permission.AD_ID_NOTIFICATION normal
com.google.android.gms.permission.CAR_FUEL dangerous
com.google.android.gms.permission.CAR_MILEAGE dangerous
com.google.android.gms.permission.CAR_SPEED dangerous
com.google.android.gms.permission.CAR_VENDOR_EXTENSION dangerous
com.google.android.portable.permission.READ normal
com.motorola.ims.permission.PRESENCE_ACCESS normal

 

Normal Permissionはともかくdangerous はグループに入れなきゃダメでしょと思うんですが、この辺りはDeveloper Preview だからでしょう、良く使われるパミッションもありますし、正式バージョンが出たらまた調査したいと思います。

 

コピペばかりになってしまいましたが、さて、ここからパミッショングループの動作について、記載しようと思いましたが、無駄にリストばかりで読みにくくなりましたので、次回記事としたいと思います。