Kitkat Android 4.4 (API Level19)でのパーミッションに関する変更は、Googleの公式ページ
Android 4.4APIs(http://developer.android.com/intl/ja/about/versions/android-4.4.html#Permissions)に記載があります。

kk_zunda.png

上記解説ページではApp Permissionの説明として3種類の追加されたパーミッションと先日の記事「KitkatのREAD_EXTERNAL_STORAGEと外部記憶領域」で記載した、READ_EXTERNAL_STRAGEとWRITE_EXTERNAL_STRAGEに関する事項が説明されていますが、追加だけで変更になった物、削除になった物の記載もありません。また密接に関連するGoogleのアプリのパーミッションに関しては記載されておりません。Nexus5も手元にありますし、ソースも今回は同時リリースされましたので、Android Framework以外の部分も含めて、追加、削除、変更になったパーミッションを説明したいと思います。

追加されたパーミッション

Android 4.4(AI Level19)で追加されたパーミッションは53個となります。
かなり多いですが。一般アプリケーションではProtection LevelがsignatureやsignatureOrSystemのものは使
用する事は出来ません。使用できない物を除外すると8個になります。8個中5個はcom.googleで始まるGoogle製品の物ですので、
Android OSとして追加されたパーミッションは、赤外線に関するTRANSMIT_IRとショートカット関連の2つを合わせた3つとなります。

パッケージ 追加全数 使用可能な数
Android.permissionで始まるパーミッション 20 3
com.androidで始まるパーミッション 8 0
com.google.androidで始まるパーミッション 25 5

Signature系では、ACCESS_KEYGUARD_SECURE_STORAGEとかCONTROL_KEYGUARDなどのキーガード関連、
MANAGE_CA_CERTIFICATESなどのセキュリティ関連機能の変更が見えたり、新機能関連のパーミッションが追加されていて、パーミッションだ
けを見ても結構変更箇所がわかって面白いのですが、時間がどれだけあっても足りませんので、一般アプリが使用可能な物のみ解説したいと思います。

一般的なアプリが使用できるパーミッション

ここでは、プレインストールアプリのようなアプリではない、GooglePlay等で配布可能なアプリが利用宣言できる8つのパーミッションを紹介します。

com.android.launcher.permission.INSTALL_SHORTCUT

Name com.android.launcher.permission.INSTALL_SHORTCUT
ProtectionLevel dangerous
Group android.permission-group.SYSTEM_TOOLS
Label Jp ショートカットのインストール
Description Jp ユーザー操作なしでホーム画面にショートカットを追加することをアプリに許可します。
Label En install shortcuts
Description En Allows an application to add Homescreen shortcuts without user
intervention.

com.android.launcher.permission.UNINSTALL_SHORTCUT

Name com.android.launcher.permission.UNINSTALL_SHORTCUT
ProtectionLevel dangerous
Group android.permission-group.SYSTEM_TOOLS
Label Jp ショートカットのアンインストール
Description Jp ユーザー操作なしでショートカットを削除することをアプリに許可します。
Label En uninstall shortcuts
Description En Allows the application to remove Homescreen shortcuts without user
intervention.

INSTALL/UNINSTALL SHORTCUT

このパーミッションを見て、あれ?昔からなかったっけ?と思われた方も多いと思います。
INSTALL_SHORTCUTパーミッションは昔から存在していました。
通常パーミッションは「com.android.permission.XXX」
なのですが、このパーミッションはランチャーアプリの物なので「com.android.launcher.permission.XXXX」形式で少し異な
ります。今まではランチャーアプリで宣言をされていたのですが、今回Lancher3が導入されたからでしょうか、Android
パーミッション名及び機能は以前と変わりませんが、パーミッションが宣言される場所が、com.android.launcherアプリケーションの
ManifestファイルからAndroid FrameworkのManifestファイルに変更になりました。Framework内で宣言されるように変更されパーミッション追加扱いとなり、Android
SDKドキュメントにも記載されました。(只、このパーミッションの開始がSince19となったので色々ややこしいです)。
また、このSHORTCUT系パーミッションですがProtection
Levelは、4.1まではnormalでしたが、4.2からdangerousに変更になっています。ホーム画面に広告ショートカットを作るアプリが問題となっています
が、そんな影響があるのでしょうか…. 前述したLancher3のパーミッションは以下となります。(公式パーミッションではありません)

  • com.android.launcher3.permission.INSTALL_SHORTCUT
  • com.android.launcher3.permission.UNINSTALL_SHORTCUT

アンドロイド端末メーカー毎にランチャーが違ったりしますし、このあたり大変なのは今まで通りで特に何も変わらないでしょう。

android.permission.TRANSMIT_IR

Name android.permission.TRANSMIT_IR
ProtectionLevel normal
Group android.permission-group.AFFECTS_BATTERY
Lavel Jp 赤外線の送信
Description Jp 携帯電話の赤外線送信機能の使用をアプリに許可します。
Label En transmit infrared
Description En Allows the app to use the phone’s infrared transmitter.

Android 4.4(API
Level19)から赤外線通信機能が追加されました。これに伴って新しいAPIとこのパーミッションが新規に追加になりました。

com.google.android.apps.docs.permission.SYNC_STATUS

Name com.google.android.apps.docs.permission.SYNC_STATUS
ProtectionLevel normal
Group android.permission-group.PERSONAL_INFO
Label Jp 同期ステータス
Description Jp ドライブへのアップロードやドライブからのダウンロードの進行状況を追跡するための権限です。
Label En Sync status
Description En Permission to track progress of file uploads/downloads to/from
Drive.



com.google.android.email.permission.READ_ATTACHMENT

Name com.google.android.email.permission.READ_ATTACHMENT
ProtectionLevel dangerous
Group android.permission-group.MESSAGES
Label Jp メール添付ファイルの読み取り
Description Jp メールの添付ファイルの読み取りをこのアプリに許可します。
Label En Read email attachments
Description En Allows the app to read your email attachments.

メール関連のパッケージがcom.google.android.emailに
なったことにより以下の昔のメール関連パッケージ「com.android.email」関連のパーミッションが削除されました。

  • com.android.email.permission.ACCESS_PROVIDER
    (signature)

    このアプリケーションにメールデータベース(送受信したメッセージ、ユーザー名、パ
    スワードを含む)へのアクセスを許可します。
  • com.android.email.permission.READ_ATTACHMENT
    (dangerous)

    メールの添付ファイルの読み取りをこのアプリケーションに許可します。

com.android.launcher3.permission.INSTALL_SHORTCUT

Name com.android.launcher3.permission.INSTALL_SHORTCUT
ProtectionLevel dangerous
Group android.permission-group.SYSTEM_TOOLS
Label Jp ショートカットのインストール
Description Jp ユーザー操作なしでショートカットを追加することをアプリに許可します。
Label En install shortcuts
Description En Allows an app to add shortcuts without user intervention.

Launcher3のショートカットパーミッションです。

com.android.launcher3.permission.UNINSTALL_SHORTCUT

Name com.android.launcher3.permission.UNINSTALL_SHORTCUT
ProtectionLevel dangerous
Group android.permission-group.SYSTEM_TOOLS
Label Jp ショートカットのアンインストール
Description Jp ユーザー操作なしでショートカットを削除することをアプリに許可します。
Label En uninstall shortcuts
Description En Allows the app to remove shortcuts without user intervention.

Launcher3のショートカットパーミッションです。

com.android.launcher3.permission.READ_SETTINGS

Name com.android.launcher3.permission.READ_SETTINGS
ProtectionLevel normal
Group android.permission-group.SYSTEM_TOOLS
Label Jp ホームの設定とショートカットの読み取り
Description Jp ホームの設定とショートカットの読み取りをアプリに許可します。
Label En read Home settings and shortcuts
Description En Allows the app to read the settings and shortcuts in Home.

Launcher3のショートカットパーミッションです。

com.google.android.apps.now.REMOTE_ACCESS

Name com.google.android.apps.now.REMOTE_ACCESS
ProtectionLevel normal
Group なし
Label Jp Google Nowへのリモートアクセス
Description Jp Google Nowのデータへのリモートアクセスが可能です。
Label En Google Now remote access
Description En Remote access to your data in Google Now.

削除されたパーミッション

昔はなんとなく用意されているパーミッションが存在していたので、使われていないパーミッションが時々削除されていましたが、最近は削除される事はあまりあ
りません。
ただ、機能自体がなくなったり、機能の仕様変更が加わったりすることで削除される事はあります。
Android
OS4.4では、8個のパーミッションが削除されましたが、androidパッケージの物はありません。7個はsignature系なので開発に影響はあまりないでしょ
う。
Normal permissionで削除された物はDRM系のパーミッションとなります

パッケージ パーミッション Level Label Description
com.android.providers.drm android.permission.ACCESS_DRM signature DRMコンテンツにアクセスします。 DRM保護されているコンテンツへのアクセスをアプリに許可します
com.android.providers.drm android.permission.INSTALL_DRM normal DRMコンテンツをインストールします。 DRM保護されているコンテンツのインストールをアプリに許可します。
com.google.android.apps.currents com.google.android.apps.currents.permission.C2D_MESSAGE signature
com.google.android.browser com.android.browser.permission.PRELOAD signatureOrSystem 結果のプリロード
com.google.android.email com.android.email.permission.ACCESS_PROVIDER signature メールプロバイダのデータへのアクセス このアプリケーションにメールデータベース(送受信したメッセージ、ユーザー名、パスワードを含む)へのアクセスを許可します。
com.google.android.email com.android.email.permission.READ_ATTACHMENT dangerous メール添付ファイルの読み取り メールの添付ファイルの読み取りをこのアプリケーションに許可します。
com.google.android.googlequicksearchbox com.google.android.voicesearch.OVERRIDE signature Override configuration Allows to override the configuration.
com.google.android.voicesearch com.google.android.voicesearch.ACCESS_SETTINGS signature

メール関連は、メールのパッケージ名が変更になったことによる整理及び削除となります。

変更されたパーミッション

パーミッションのプロテクションレベルも、Android OSのバージョンアップによって変わります。normalからdangerousへの変更だとあまり影
響はないのですが、時々signature系への変更があります。この場合一般アプリでは<uses-permission>で利用宣言する事が出来
なくなり、アプリケーションが新OSでは動作しない問題がでます。
Android OS 4.3から4.4へのプロテクションレベルの変更では一つのみ変更がありました。

android.permission.BATTERY_STATS

Name android.permission.BATTERY_STATS
ProtectionLevel DangrousからsignatureOrSystemへ変更
Group SYSTEM_TOOLS
Label Jp 電池統計情報の読み取り
Description Jp 現在の電池消費量の低レベルデータを読み取ることをアプリに許可します。このアプリが、使用しているアプリの詳細情報を確認できるようになり
ます。
Label En read battery statistics
Description En Allows an application to read the current low-level battery use
data. May allow the application to find out detailed information
about which apps you use.

このパーミッションは4.1まではnormalパーミッションで、4.2でdangerousパーミッションになり、4.4で signatureOrSystem
となり実質使えなくなりました。
PowerManagerクラスのパーミッションは、android.permission.DEVICE_POWERだし、BatteryManager系
はブロードキャストを受け取るタイプでパーミッションいりません。
Android 3.0頃、設定画面でアプリケーション毎のバッテリー情報が見れるようになりました。この画面で取得するような情報を取得するときに
android.permission.BATTERY_STATSが必要になります。
image001.jpg

実際にBatteryStatsServiceあたりをごにょごにょするには、リフレクションを使ったりしてかなりめんどくさいので使っている人は殆どいない
と思ってます。
と思ってググってみたら富士通さんの「アプリ情報取得機能 サンプルアプリケーション」
(http://spf.fmworld.net/oss/appkit/fbatterystatusutil/sample.html)
でBATTERY_STATSで使用している例を見つけました。バッテリー関連でガリガリやっている方は要注意です。

まとめ

<uses-permission>での利用宣言を中心に見ていきましたが、ブロードキャストレシーバ等で、ブロードキャストの送信元がシステ
ムかどうかを判断するときに、signature系のパーミッションをAndroidManifest.xmlに記載されたコンポーネントの
permissionに記載する事もあります。
従ってsignature系のパーミッションは全て無視して理解しなくても良いわけではありません。(でも大体ドキュメント見ればわ
かりますが…)
この辺りのパーミッションの変更点に関しては次回記載したいと思っております。

前回の記事で、画像がなく文字ばかりで読みにくかったので、反省して、ずんだ風味KitKatの画像をいれてみました!だけど、削除されたパミッションの部分のテーブルの右側が切れてしまってます。気になる方はHTMLのソースみてくださいという、すごい逃げ方で申し訳ありません

ブログ内の関連する記事