Android 4.4 パミッションの変更
Kitkat Android 4.4 (API Level19)でのパーミッションに関する変更は、Googleの公式ページ
Android 4.4APIs(http://developer.android.com/intl/ja/about/versions/android-4.4.html#Permissions)に記載があります。
上記解説ページでは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が必要になります。
実際にBatteryStatsServiceあたりをごにょごにょするには、リフレクションを使ったりしてかなりめんどくさいので使っている人は殆どいない
と思ってます。
と思ってググってみたら富士通さんの「アプリ情報取得機能 サンプルアプリケーション」
(http://spf.fmworld.net/oss/appkit/fbatterystatusutil/sample.html)
でBATTERY_STATSで使用している例を見つけました。バッテリー関連でガリガリやっている方は要注意です。
まとめ
<uses-permission>での利用宣言を中心に見ていきましたが、ブロードキャストレシーバ等で、ブロードキャストの送信元がシステ
ムかどうかを判断するときに、signature系のパーミッションをAndroidManifest.xmlに記載されたコンポーネントの
permissionに記載する事もあります。
従ってsignature系のパーミッションは全て無視して理解しなくても良いわけではありません。(でも大体ドキュメント見ればわ
かりますが…)
この辺りのパーミッションの変更点に関しては次回記載したいと思っております。
前回の記事で、画像がなく文字ばかりで読みにくかったので、反省して、ずんだ風味KitKatの画像をいれてみました!だけど、削除されたパミッションの部分のテーブルの右側が切れてしまってます。気になる方はHTMLのソースみてくださいという、すごい逃げ方で申し訳ありません
ブログ内の関連する記事
- KitkatのREAD_EXTERNAL_STORAGEと外部記憶領域
- Nexus5 届きました
- Android 4.4 KitKatの概要ビデオ
- アンドロイド permission STORAGE グループ
- Android OS 4.1のセキュリティ的な変更点
コメント
コメントを投稿