Warum benötigen so viele Anwendungen eine Berechtigung zum Lesen des Telefonstatus und der Identität?

88

Warum benötigen so viele Anwendungen eine Berechtigung zum Lesen des Telefonstatus und der Identität? Speziell:

Phone calls
   read phone state and identity

Beispielsweise ist Quickpedia ein Wikipedia-Portal, möchte aber Zugriff auf das Telefon haben. Was ist die Erklärung dafür?

Bildbeschreibung hier eingeben

Nam G VU
quelle
Es ist nicht wirklich, für "yeah yeah, diese App hat diese Erlaubnis, SMS zu senden und eine Premium-Nummer hinter deinem Rücken zu klingeln", was die Leute annehmen . @ Christians Antwort unten hat den Nagel auf den Kopf getroffen! In vielen Fällen ist dies legitim, und häufig vergessen Entwickler, die Berechtigungen herabzusetzen (möglicherweise ein Vorbehalt aus den frühen Tagen der Entwicklung einer App).
t0mm13b
1
@ t0mm13b Ich glaube nicht, dass es eine große Nachfrage nach reduzierten Berechtigungen außerhalb von Technikfreaks und Datenschutzfreaks gibt (selbst eingeschlossen). Wenn App-Hersteller es einfach zur Norm machen, die gesamte Berechtigungssuite zu fordern, gehen die Verbraucher davon aus, dass viele Berechtigungen für jede App in Ordnung sind. Die Regierung setzt sie nicht unter Druck, Mindestgenehmigungen zu verwenden, und der Markt setzt sie bisher nicht unter Druck. Das heißt, dass Apps kaum bis gar keine Kosten verursachen, wenn sie viele Berechtigungen benötigen.
user29020

Antworten:

59

Damit kann die App eine eindeutige ID (eine Telefon-ID mit dem Namen IMEI ) lesen , die mit Ihrem Telefon verknüpft ist.

Es kann daher beim Kopierschutz oder beim Versuch, die Anzahl der Benutzer zu verfolgen, hilfreich sein.

rauben
quelle
3
Diese SO-Frage zum Abrufen einer eindeutigen ID eines Telefons ist die (derzeit) zuverlässigste Möglichkeit für Entwickler, eine eindeutige ID von einem Telefon abzurufen, und
GAThrawn
40

Es gibt einen anderen Grund als die eindeutige ID. Ich würde vermuten, dass die Hälfte der Apps überhaupt nicht auf diese Werte zugreifen. Das Problem ist, dass für eine niedrigere Version bis zu Android 1.5 diese Berechtigung nicht vorhanden ist. Jeder konnte auf diese Werte zugreifen, ohne etwas anzufordern.

Wenn Sie eine App erstellen, die mit 1.5 kompatibel ist, wird diese Berechtigung automatisch hinzugefügt, um die geringere Sicherheit von Android 1.5 zu emulieren. Aus diesem Grund können Sie diese Berechtigung in den meisten Fällen ignorieren, da es sich in der Regel nur um ein Kompatibilitätsproblem handelt.

ce4
quelle
2
Gleiches gilt für den Zugriff auf SD-Karten.
Denis Nikolaenko
1
Das stimmt - erklärt aber nicht, warum Apps für 2.x und höher es so oft wollen.
Izzy
19

Der Grund dafür ist, dass Android 1.5 und frühere Versionen die Anwendung nicht dazu aufforderten, diese Berechtigungen speziell anzufordern, und sie automatisch gewährten. Seit Android 1.6 müssen diese Berechtigungen von der App speziell angefordert werden. Wenn Sie jedoch angeben, dass Ihre Anwendung auf Geräten mit Android 1.5 und weniger ausgeführt werden kann, wird diese Berechtigung standardmäßig zur Anwendung hinzugefügt, und der Markt zeigt diese Berechtigung als von der Anwendung angefordert an.

Zusammenfassend kann gesagt werden, dass die Anwendung möglicherweise nicht auf Ihren "Telefonstatus und Ihre Identität" zugreift. Wenn der Entwickler jedoch angibt, dass seine Anwendung auf Geräten mit 1,5 oder weniger ausgeführt werden kann, wird diese Berechtigung angezeigt.


quelle
Haben Sie einen Link zu einer Dokumentation, die dies zeigt?
GAThrawn
developer.android.com/reference/android/os/… enthält eine vollständige Liste der Zielversions-IDs und der Änderungen der Berechtigungen (unter anderem Unterschiede) zwischen ihnen.
Stewart
Richtig. Aber wahrscheinlich nicht mehr "interessant", da Apps für 1.5 und niedriger ziemlich selten wurden :)
Izzy
18

Diese Frage hat mich schon länger beschäftigt. Nun endlich habe ich mich entschlossen, dem Thema auf den Grund zu gehen.

Der Playstore verfügt über eine App namens permission.READ_PHONE_STATE , die READ_PHONE_STATEals einzige Berechtigung anfordert und nichts anderes tut, als alle Daten auszudrucken, auf die er zugreifen kann, mit oder ohne sie zu verwenden. Ich habe das auf meinem LG Optimus 4X installiert, das auf Android 4.0.3 verwurzelt ist, und die Erlaubnis mit LBE widerrufen. Die Ergebnisse waren ziemlich interessant, wie die folgenden Screenshots zeigen:

Screenshot 1 Screenshot 2 Screenshot 3
Mit der App- Berechtigung gesammelte Informationen.READ_PHONE_STATE (Bilder anklicken für größere Varianten)

Wie Sie leicht sehen können, waren sogar einige Informationen, auf die der Entwickler ohne Erlaubnis nicht zugreifen konnte, frei zugänglich: meine Mailbox-Nummer (Anmerkung: Ja, es ist die richtige; bei meinem Provider ist das die Abkürzung, wenn Sie von Ihrem eigenen Gerät aus wählen, also kann ich zeige es frei an;) Am Ende des ersten Screenshots siehst du:

  • CALL_STATE_IDLE. Also kein eingehender, ausgehender oder laufender Anruf. Keine App benötigt diese Berechtigung, um sich bei eingehenden Anrufen im Hintergrund zu "verhalten".

Es ist sogar möglich zu sehen, ob mobile Daten aktiv sind ( DATA_DISCONNECTEDich war beim Aufnehmen der Screenshots im WLAN, wie Sie in der Benachrichtigungsleiste sehen können), in welchem ​​Land Sie sich befinden, bei Ihrem Anbieter (einschließlich einiger technischer Daten zu ihm), ob Sie haben eine SIM-Karte oder sind im Roaming.

Die einzigen Dinge, auf die nicht zugegriffen werden kann, sind identifizierende Daten: IMEI, SIMID, IMSI und Ihre eigene Telefonnummer.

Fazit: Diese Erlaubnis wird nur zu Identifikationszwecken benötigt, sonst nichts.

Warum brauchen es dann so viele Apps?

  • Für die Anzeigenmodule am wahrscheinlichsten 1
  • Weil der Entwickler dachte, er brauche es (wie in einigen Antworten hier angegeben). 2
  • Weil die betreffende App (auch) für Android 1.5 und niedriger ausgelegt ist (leicht herauszufinden, wie bei Google Play aufgeführt ).

Wahrscheinlichkeiten in genau dieser Reihenfolge, IMHO.


1 Anmerkung von Dans Beitrag im Chat :

Die Google Play-Richtlinie verbietet Apps nun, Ihre IMEI zu veranlassen, Sie zu Werbezwecken zu identifizieren. Alle Anzeigenbibliotheken wurden jetzt aktualisiert, um die von Google Play Services bereitgestellte "Werbe-ID" zu verwenden. Daher sollten alle, die noch die IMEI für diesen Zweck verwenden, an Google gemeldet werden.

Da der Benutzer nur schwer erkennen kann, wofür die App die IMEI verwendet, sollten Sie den Entwickler bitten, dies zuerst zu erläutern.


2 Ein anderer Entwickler hat mich nur auf einen subtilen Unterschied hingewiesen: Während die Berechtigung nicht erforderlich ist, um den aktuellen Anrufstatus zu lesen (wie ich darauf hingewiesen habe), muss möglicherweise ein Listener registriert werden, um über Änderungen des Anrufs benachrichtigt zu werden Status (siehe: Erkennen eingehender und ausgehender Anrufe unter Android ). Es scheint zwar Mittel zu geben, um dies automatisch zu handhaben, wenn das System aufruft , dies ist jedoch möglicherweise nicht immer geeignet: Denken Sie an Ihren Wecker. Möglicherweise möchten Sie nicht, dass dies bei einem eingehenden Anruf automatisch gestoppt wird. Dies gilt insbesondere dann nicht, wenn in Ihrem Profil die Ruftonlautstärke "stummgeschaltet" ist.onPause


3 Wieder eine Korrektur von Dan : Sie erhalten die Standard-Extra-Berechtigung nur, wenn die "Ziel" -Version Ihrer App 1.5 ist. Wenn Sie auf eine spätere Version abzielen, Ihre Mindestversion jedoch 1.5 ist, wird die Berechtigung nicht automatisch hinzugefügt.


Aktualisierung

  1. Interessant ist, dass es ein offenes Thema gibt (21504) , READ_PHONE_STATEin das aufgeteilt werden muss, um a) eingehende Anrufe und verwandte (Telefonie) und eine zweite Erlaubnis für die Identifikationsdetails (IMEI, IMSI usw.) zu erkennen. Geöffnet 11/2011, noch nicht bearbeitet. Star es bei Interesse :)
  2. Und ja, es gibt eine Möglichkeit, dasselbe zu erreichen (eingehende Anrufe zu erkennen), ohne die READ_PHONE_STATEErlaubnis, wie zB von Arno Welzel ausgeführt . Da ein eingehender Anruf den Rufton auslösen würde, könnte dieses Ereignis mit verwendet werden onAudioFocusChange(), für das keine besondere Berechtigung erforderlich ist. Wenn dies ausgelöst wird, könnte die App den CallState überprüfen (erneut, ohne besondere Berechtigung erforderlich), um festzustellen, ob eine vorhanden ist eingehender Anruf.
Izzy
quelle
Ich denke, Sie müssen den Teil entfernen, in dem Sie sagen, dass keine App diese Berechtigung für den Hintergrund bei eingehenden Anrufen benötigt. Sie haben dies bereits in Fußnote 2 ausgeführt, aber es ist widersprüchlich. Siehe auch developer.android.com/reference/android/telephony/…
Mikel
@Mikel Du hast teilweise recht. Die Verwendung dieser Berechtigung ist der "einfachste" Weg, um die Aufgabe auszuführen, aber nicht der einzige. Wie einige Entwickler betonten (war es im Chat? Leider habe ich den Link verloren), kann darauf verzichtet werden. Wie bei vielen anderen Dingen erleichtert die Verwendung der APIs von Google die Ausführung einiger Aufgaben erheblich (und bindet Ihre App gleichzeitig an das Google-Ökosystem). Ich bin kein Entwickler, daher kann ich nicht sagen, wie viel Arbeit die andere Art bedeuten würde.
Izzy
Ich bin auch noch kein Android-Entwickler und stimme zu, dass einige Anwendungsfälle von onPause () abgedeckt werden. Nur zu sagen, dass "Keine App diese Berechtigung benötigt", klingt für mich falsch. Es hört sich eher so an, als ob "einige Apps diese Berechtigung benötigen", z. B. wenn sie im Hintergrund ausgeführt werden. Beachten Sie auch, dass das Empfangen der Sendeabsicht mit Sicherheit effizienter sein muss, als das wiederholte Abfragen des Telefonstatus.
Mikel
@Mikel Siehe mein Update. Und ja, "überhaupt keine Notwendigkeit" könnte etwas übertrieben sein. Vielleicht in 0,5% aller aktuellen Anfragen, könnte es in der Tat erforderlich sein, keine andere Alternative zur Verfügung # D Und ja wieder: das onPause()war , was wir auf dem Chat für das diskutiert! Aber die Verwendung von onAudioFocusChange()kann sogar zu einem geringeren Overhead führen (das kleine Polling kann dann ignoriert werden).
Izzy
10

Viele Anzeigenverlage verwenden diese Berechtigung, um die Telefon-ID für alle Arten von Nachverfolgungszwecken abzurufen. Es gibt andere Möglichkeiten, eine eindeutige ID zu erhalten, aber leider sind sie in älteren Android-Versionen fehlerhaft (die Geschichte ist komplizierter, siehe z. B. https://stackoverflow.com/questions/2785485/is-there-a-unique-android- Geräte-ID oder http://android-developers.blogspot.com/2011/03/identifying-app-installations.html für eine vollständigere Geschichte).

Wenn die App Werbung verwendet, besteht die Möglichkeit, dass die App selbst nicht die Berechtigung READ_PHONE_STATE benötigt, sondern nur der Anzeigenanbieter.

Kasper Peeters
quelle
1
Das ist meiner Meinung nach das Hauptproblem dahinter! Gut gemeint.
Izzy