Skip to content

Most visited

Recently visited

navigation

パーミッションとユーザーデータ

パーミッションにより、端末で利用できる機密情報が保護されます。パーミッションは、アプリが機能するために情報にアクセスすることが必要な場合にのみ使用する必要があります。

このドキュメントでは、リクエストするパーミッションについて十分な情報に基づいてより適切な決定を下せるようにするために、Android でパーミッションが機能する方法の概要を説明しています。このドキュメントの情報はユースケース固有のものではなく、基盤となるコードに関する複雑で具体的な説明は省いています。

パーミッションを管理する方法に関する特定の推奨事項については、アプリ パーミッションのベスト プラクティスを参照してください。Android で一意の識別子を使用することに関するベスト プラクティスについては、一意の識別子のベスト プラクティスを参照してください。コードでパーミッションを使用する方法の詳細については、システム パーミッションの使用を参照してください。

はじめに

すべての Android アプリは、アプリに関する重要な情報を Android システムに提示するマニフェスト ファイルを備えている必要があります。また、Android システムでは、アプリが機密性の高い端末やユーザー情報にアクセスする必要がある場合、アプリはパーミッションをリクエストする必要があります。これらのリクエストは、アプリのマニフェストの一部として事前にドキュメント化されている必要があります。さらに、機密性の高い情報へのアクセスはユーザーの行動に影響を及ぼす可能性があるため、アプリの機能のためにこうした情報が必要な場合にのみ、パーミッションをリクエストする必要があることに注意してください。

パーミッション グループ

Android のパーミッションは、端末の性能や機能に関連するパーミッションを整理およびグループ化する permission groups に分類されます。このシステムでは、パーミッション リクエストがグループレベルで処理され、単一のパーミッション グループは、アプリ マニフェスト内の複数のパーミッション宣言に対応します。たとえば、SMS グループには、READ_SMSRECEIVE_SMS の両方の宣言が含まれます。

この仕組みは、ユーザーにとってよりシンプルで有益です。グループにアクセスするパーミッションがアプリに付与されると、アプリはそのグループの API を呼び出すことができます。また、自動アップデートを有効にしているユーザーには、グループにアクセスするパーミッションが既に付与されているため、追加のパーミッションが要求されません。このようにパーミッションをグループ化すると、ユーザーは、複雑かつ技術的なパーミッション リクエストに困惑することなく、十分な情報に基づいて、より適切な判断を下せるようになります。

この仕組みにより、デベロッパーが特定の API 呼び出しのためのアクセスをリクエストしたり、パーミッションの背後でコンテンツ プロバイダにクエリを発行したりすると、ユーザーには、特定の API 呼び出しではなく、グループ全体にパーミッションを付与するためのリクエストが表示されます。たとえば、デベロッパーが WRITE_CALL_LOG パーミッションをリクエストした場合、ユーザーは、READ_PHONE_STATECALL_PHONEREAD_CALL_LOGWRITE_CALL_LOGADD_VOICEMAILUSE_SIP、および PROCESS_OUTGOING_CALLS パーミッションで構成される PHONE グループと、関連付けられているすべてのメソッドへのアクセスを付与するように求められます(API レベル 23 以上で)。

パーミッションをグループ化すると、アプリがリクエストするパーミッションの数において、アプリ内の 1 つの API 呼び出しが乗算的な効果をもたらします。

  1. API 呼び出し →
  2. 特定のパーミッション グループへのアクセス リクエストをトリガーする →
  3. リクエストが成功すると、グループ内のすべてのパーミッションへのアクセスが付与される(自動アップデートが有効にされている場合) →
  4. 各パーミッションにより、それらのパーミッションに対応するすべての API へのアクセスが付与される

別の例として、アプリが次のような 1 つまたは複数の TelephonyManager メソッドを使用するとします。

TelephonyManager.getDeviceId()
TelephonyManager.getSubscriberId()
TelephonyManager.getSimSerialNumber()
TelephonyManager.getLine1Number()
TelephonyManager.getVoiceMailNumber()

これらのメソッドを使用するには、アプリのマニフェストで READ_PHONE_STATE パーミッションが宣言されている必要があり、関連付けられているパーミッション グループ PHONE がユーザーに提示されます。これは、重要な点です。ユーザーは、リクエストされている特定の API 呼び出しではなく、関連するグループに加えて、関連付けられているすべてのパーミッションおよび API 呼び出しにパーミッションを付与するように求められるからです。

パーミッションと、関連付けられているパーミッション グループ間のマッピングについては、対応するバージョンに固有の次のドキュメントを参照してください。

パーミッションのリクエストとアプリのダウンロード

現在、Android で READ_PHONE_STATE パーミッションを使用して、呼び出しがあったときにメディア プレイヤーを一時停止し、呼び出しが終了すると再生を再開するようにしています。パーミッションは多くのユーザーを混乱させているようです...1

調査結果によると、(機能やブランド認知度などが)同等のアプリの場合、パーミッションのリクエストが少ない方が、ダウンロード数が増加することが明らかになっています。パーミッションの使用に基づいてアプリを評価している資料が公開されており、ユーザーはこれらの評価スコアに基づいて関連アプリを比較することができます。現在の多くの Android アプリについて評価されており、ユーザーは関連するランキングに注目しています。

ある調査2 では、評価や機能は同等で、リクエストするパーミッションが異なる、ブランド名のない 2 つのアプリをユーザーが試用した結果、パーミッション リクエストが少ない方のアプリがインストールされる確率が平均して 3 倍高いことが示されました。また、同様の調査3 では、パーミッション リクエストが少ない方のアプリを選択する確率が平均して 1.7 倍高いことが示されました。

最後に、パーミッションの使用は、Play アプリの同じカテゴリ内のアプリ間に均等に分散されているわけではありません。たとえば、Play ストアのアーケード ゲーム アプリの 39.3% はユーザーにパーミッションをリクエストしませんが、アーケード ゲームの 1.5% が Phone パーミッション グループをリクエストします(図 1 を参照)。

図 1 アーケード ゲームのパーミッション グループ使用の分布

アプリを他の同様のアプリと比較しているユーザーは、アプリがそのカテゴリで不自然なリクエストを要求していると判断する場合があります。このケースでは、アーケード ゲーム アプリが Phone パーミッション グループにアクセスすることです。その結果、ユーザーは、こうしたリクエストを避けるために、そのカテゴリ内の別のアプリをインストールする場合があります。4

パーミッション リクエストの減少傾向

Play ストアアプリを長期に渡って調査した最近の分析では、多くのデベロッパーはアプリを最初に公開した後、パーミッションの数を削減していることが明らかになっています。これは、宣言するパーミッション グループに関して、デベロッパーがより注意を払うようになった可能性があることを示唆します。

図 2 デベロッパーによる一般的なパーミッションの使用は徐々に減少しています。

図 2 のグラフはこの傾向を示しています。デベロッパーのアプリが Play ストアの最も一般的な 3 つのパーミッション(READ_PHONE_STATEACCESS_FINE_LOCATION、および ACCESS_COARSE_LOCATION)のうち少なくとも 1 つをリクエストする平均的な割合は着実に減少しています。これらの結果は、ユーザーの反応に応じて、アプリがリクエストするパーミッションの数をデベロッパーが削減していることを示しています。

つまり、機密性の高い情報へのアクセスを最小限にしながら、同じ機能をユーザーに提供すると、アプリのダウンロード数が増加します。これを実現する方法に関する特定の推奨事項については、アプリ パーミッションのベスト プラクティスを参照してください。

リファレンス

[1] StackOverflow でのデベロッパーのコメント(ソース

[2] Using Personal Examples to Improve Risk Communication for Security and Privacy Decisions, by M. Harbach, M. Hettig, S. Weber, and M. Smith.ACM CHI 2014 の紀要。

[3] Modeling Users’ Mobile App Privacy Preferences:Restoring Usability in a Sea of Permission Settings, by J. Lin B. Liu, N. Sadeh and J. Hong.SOUPS 2014 の紀要。

[4] Teens and Mobile Apps Privacy(ソース

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

WeChat で Google Developers をフォローする

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)