多くのアプリケーションが電話の状態とIDを読み取る許可を必要とするのはなぜですか?具体的には:
Phone calls
read phone state and identity
たとえば、QuickpediaはWikipediaポータルですが、電話へのアクセスが必要です。これの説明は何ですか?
多くのアプリケーションが電話の状態とIDを読み取る許可を必要とするのはなぜですか?具体的には:
Phone calls
read phone state and identity
たとえば、QuickpediaはWikipediaポータルですが、電話へのアクセスが必要です。これの説明は何ですか?
回答:
アプリは、携帯電話に関連付けられている一意のID(IMEIという電話識別子)を読み取ることができます。
したがって、コピー防止またはユーザー数の追跡の試行に役立ちます。
これには、一意のID以外の理由もあります。アプリの半分は、これらの値にまったくアクセスしないと思います。問題は、Android 1.5までの以前のバージョンでは、この許可が存在しないことです。誰もが何かを要求することなくこれらの値にアクセスできます。
したがって、1.5と互換性のあるアプリを作成すると、Android 1.5の低いセキュリティをエミュレートするためにこの権限が自動的に追加されます。これは、互換性の問題になりやすいため、ほとんどの場合この権限を無視できるためです。
その理由は、Android 1.5以前では、アプリケーションがこれらの許可を明確に要求し、自動的に許可することを要求しなかったためです。Android 1.6以降、これらのアクセス許可はアプリによって特別に要求される必要があります。ただし、Android 1.5以前のデバイスでアプリケーションを実行できるように指定した場合、その許可はデフォルトでアプリケーションに追加され、マーケットはその許可がアプリケーションによって要求されていることを示します。
要約すると、アプリケーションは実際には「電話の状態とID」にアクセスしていない可能性がありますが、開発者がアプリケーションを1.5以下のデバイスで実行できると指定した場合、その許可が表示されます。
この質問はかなり長い間私を悩ませてきました。だから、ついに、私は問題の一番下に到達することにしました。
Playstoreには、permission.READ_PHONE_STATEという名前のアプリがあります。これREAD_PHONE_STATE
は、唯一の権限としてリクエストし、それを使用して、または使用せずにアクセスできるすべてのデータを出力する以外は何もしません。私はLG Optimus 4Xにそれをインストールし、Android 4.0.3に根ざし、LBEを使用して許可を取り消しました。次のスクリーンショットが示すように、結果はかなり興味深いものです。
アプリの許可によって収集された情報。READ_PHONE_STATE (画像をクリックすると大きなバリエーションが表示されます)
簡単にわかるように、開発者が許可なくアクセスできないにもかかわらず、自由にアクセスできた情報もあります:私のメールボックス番号(備考:はい、正しい番号です。自分のデバイスからダイヤルするときのショートカットはプロバイダーです。自由に表示します;)最初のスクリーンショットの最後に表示されます:
CALL_STATE_IDLE
。したがって、着信、発信、または進行中の電話はありません。着信時に自身を「バックグラウンド」にするために、この許可を必要とするアプリはありません。モバイルデータがアクティブかどうか(DATA_DISCONNECTED
;通知バーでわかるように、スクリーンショットを撮るときにWiFiを使用していました)、あなたがいる国、プロバイダー(彼に関するいくつかの技術データを含む)、 SIMカードを持っているか、ローミング中です。
したがって、アクセスできないのは、IMEI、SIMID、IMSI、および自分の電話番号の識別データのみです。
結論:この許可は、識別の目的でのみ必要であり、他には何も必要ありません。
なぜそんなに多くのアプリがそれを必要とするのですか?
まさにこの順序での可能性、私見。
1 ダンのチャットへの投稿によるメモ:
Google Playポリシーでは、アプリがIMEIを取得して広告目的であなたを識別することを禁止しています。すべての広告ライブラリは、Google-Play-Servicesが提供する「広告ID」を使用するように更新されているため、この目的でIMEIを使用している場合は、Googleに報告する必要があります。
ユーザーがアプリでIMEIを使用している対象を特定するのは難しいので、最初に開発者に説明してもらう必要があります。
2別の開発者は、ちょうど微妙な違いに私を指摘:許可をする必要がないながら読んで(私が指摘してきたように)現在の通話状態を、登録するために必要なことがあり、リスナーをするためには、通知に変更コールのステータス(参照:Androidでの着信および発信通話の検出)。システムがを呼び出すときにこれを自動的に処理する手段があるように見えますがonPause
、それは必ずしも適切ではないかもしれません:目覚まし時計を考えてください。特に、プロファイルが着信音量に「ミュート」に設定されている場合は、着信コールで自動的に停止したくない場合があります。
3 ダンからの修正:アプリの「ターゲット」バージョンが1.5の場合にのみ、デフォルトの追加許可を取得します。後のバージョンをターゲットにしているが、最小バージョンが1.5の場合、許可は自動的に追加されません。
READ_PHONE_STATE
です。2011年11月にオープンしましたが、まだ作業されていません。興味があればスターを付けてください:)READ_PHONE_STATE
onAudioFocusChange()
onPause()
、それについてはチャットで議論しました!しかし、使用onAudioFocusChange()
することでオーバーヘッドが少なくなる可能性があります(その場合、小さなポーリングは無視できる場合があります)。
多くの広告発行者は、この許可を使用して、あらゆる種類の追跡目的で電話IDを取得します。一意のIDを取得する方法は他にもありますが、残念ながら古いAndroidバージョンではバグがあります(話はもっと複雑です。たとえば、https://stackoverflow.com/questions/2785485/is-there-a-unique-android-詳細については、device-idまたはhttp://android-developers.blogspot.com/2011/03/identifying-app-installations.htmlをご覧ください)。
そのため、アプリが広告を使用する場合、アプリ自体が実際にREAD_PHONE_STATE権限を必要とせず、広告プロバイダーのみが必要とする可能性がかなりあります。