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)に記載があります。

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で始まるパーミッション203
com.androidで始まるパーミッション80
com.google.androidで始まるパーミッション255

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

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

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

com.android.launcher.permission.INSTALL_SHORTCUT

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

com.android.launcher.permission.UNINSTALL_SHORTCUT

Namecom.android.launcher.permission.UNINSTALL_SHORTCUT
ProtectionLeveldangerous
Groupandroid.permission-group.SYSTEM_TOOLS
Label Jpショートカットのアンインストール
Description Jpユーザー操作なしでショートカットを削除することをアプリに許可します。
Label Enuninstall shortcuts
Description EnAllows 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

Nameandroid.permission.TRANSMIT_IR
ProtectionLevelnormal
Groupandroid.permission-group.AFFECTS_BATTERY
Lavel Jp赤外線の送信
Description Jp携帯電話の赤外線送信機能の使用をアプリに許可します。
Label Entransmit infrared
Description EnAllows the app to use the phone’s infrared transmitter.

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

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

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



com.google.android.email.permission.READ_ATTACHMENT

Namecom.google.android.email.permission.READ_ATTACHMENT
ProtectionLeveldangerous
Groupandroid.permission-group.MESSAGES
Label Jpメール添付ファイルの読み取り
Description Jpメールの添付ファイルの読み取りをこのアプリに許可します。
Label EnRead email attachments
Description EnAllows 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

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

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

com.android.launcher3.permission.UNINSTALL_SHORTCUT

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

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

com.android.launcher3.permission.READ_SETTINGS

Namecom.android.launcher3.permission.READ_SETTINGS
ProtectionLevelnormal
Groupandroid.permission-group.SYSTEM_TOOLS
Label Jpホームの設定とショートカットの読み取り
Description Jpホームの設定とショートカットの読み取りをアプリに許可します。
Label Enread Home settings and shortcuts
Description EnAllows the app to read the settings and shortcuts in Home.

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

com.google.android.apps.now.REMOTE_ACCESS

Namecom.google.android.apps.now.REMOTE_ACCESS
ProtectionLevelnormal
Groupなし
Label JpGoogle Nowへのリモートアクセス
Description JpGoogle Nowのデータへのリモートアクセスが可能です。
Label EnGoogle Now remote access
Description EnRemote access to your data in Google Now.

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

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

パッケージパーミッションLevelLabelDescription
com.android.providers.drmandroid.permission.ACCESS_DRMsignatureDRMコンテンツにアクセスします。DRM保護されているコンテンツへのアクセスをアプリに許可します
com.android.providers.drmandroid.permission.INSTALL_DRMnormalDRMコンテンツをインストールします。DRM保護されているコンテンツのインストールをアプリに許可します。
com.google.android.apps.currentscom.google.android.apps.currents.permission.C2D_MESSAGEsignature
com.google.android.browsercom.android.browser.permission.PRELOADsignatureOrSystem結果のプリロード
com.google.android.emailcom.android.email.permission.ACCESS_PROVIDERsignatureメールプロバイダのデータへのアクセスこのアプリケーションにメールデータベース(送受信したメッセージ、ユーザー名、パスワードを含む)へのアクセスを許可します。
com.google.android.emailcom.android.email.permission.READ_ATTACHMENTdangerousメール添付ファイルの読み取りメールの添付ファイルの読み取りをこのアプリケーションに許可します。
com.google.android.googlequicksearchboxcom.google.android.voicesearch.OVERRIDEsignatureOverride configurationAllows to override the configuration.
com.google.android.voicesearchcom.google.android.voicesearch.ACCESS_SETTINGSsignature

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

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

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

android.permission.BATTERY_STATS

Nameandroid.permission.BATTERY_STATS
ProtectionLevelDangrousからsignatureOrSystemへ変更
GroupSYSTEM_TOOLS
Label Jp電池統計情報の読み取り
Description Jp現在の電池消費量の低レベルデータを読み取ることをアプリに許可します。このアプリが、使用しているアプリの詳細情報を確認できるようになり
ます。
Label Enread battery statistics
Description EnAllows 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のソースみてくださいという、すごい逃げ方で申し訳ありません

ブログ内の関連する記事


コメント

このブログの人気の投稿

島へ移住の話【炊飯】

ドローンプログラミング体験教室を伊豆大島の小学校でしてきました

情報処理安全確保支援士登録証のカード型が届きました。