Pourquoi tant d'applications nécessitent-elles l'autorisation de lire l'état et l'identité du téléphone?

88

Pourquoi tant d'applications nécessitent-elles l'autorisation de lire l'état et l'identité du téléphone?. Plus précisément:

Phone calls
   read phone state and identity

Par exemple, Quickpedia est un portail Wikipedia, mais souhaite accéder au téléphone. Quelle est l'explication pour ça?

entrez la description de l'image ici

Nam G VU
la source
Ce n'est pas vraiment, car "ouais ouais, cette application a cette permission d'envoyer des sms et de sonner un numéro premium derrière ton dos", ce que les gens supposent . @ La réponse de Christian ci-dessous a frappé le clou! Il est légitime dans de nombreux cas, et très souvent, les développeurs ont tendance à oublier de réduire les autorisations (peut-être une retenue des débuts du développement d'une application).
t0mm13b
1
@ t0mm13b Je ne pense pas qu'il y ait beaucoup de demande pour des autorisations réduites en dehors des techniciens et des geeks de la vie privée (auto inclus). Donc , si les fabricants d'applications simplement en font la norme d'exiger la suite complète des droits, les consommateurs assumeront beaucoup d'autorisations sont très bien pour toute application. Le gouvernement ne fait pas pression sur eux pour qu'ils utilisent des autorisations minimales, et jusqu'à présent, le marché ne les presse pas. C'est-à-dire que les applications nécessitent peu d'autorisations pour un coût minime.
user29020

Réponses:

59

Il permet à l'application de lire un identifiant unique (un identifiant de téléphone appelé IMEI ) associé à votre téléphone.

Cela peut donc aider à la protection contre la copie ou à la tentative de suivi du nombre d'utilisateurs.

Rob
la source
3
Voir cette question SO à obtenir un identifiant unique d'un téléphone, ressemble à la (actuellement) moyen le plus fiable pour un développeur pour obtenir un identifiant unique à partir d' un téléphone nécessite l'autorisation Etat Lire Téléphone stackoverflow.com/questions/2785485/...
GAThrawn
40

Il y a une autre raison à cela que l'ID unique. Je suppose que la moitié des applications n’ont pas du tout accès à ces valeurs. Le problème est que pour une version inférieure à Android 1.5, cette autorisation n'existe pas. Tout le monde pouvait accéder à ces valeurs sans demander quelque chose.

Par conséquent, si vous créez une application compatible avec la version 1.5, cette autorisation sera automatiquement ajoutée pour émuler la sécurité inférieure d'Android 1.5, car vous pourriez ignorer cette autorisation dans la plupart des cas, car il s'agit généralement d'un problème de compatibilité.

ce4
la source
2
La même chose se produit avec l'accès à la carte SD.
Denis Nikolaenko
1
C'est vrai, mais cela n'explique pas pourquoi les applications pour les versions 2.x et supérieures le souhaitent aussi souvent.
Izzy
19

La raison en est que Android 1.5 et les versions antérieures ne nécessitaient pas que l'application demande spécifiquement ces autorisations et les leur accordait automatiquement. Depuis Android 1.6, ces autorisations doivent être spécifiquement demandées par l'application. Toutefois, si vous indiquez que votre application peut être exécutée sur des appareils dotés d'Android 1.5 ou version ultérieure, cette autorisation est ajoutée à l'application par défaut et le marché indique que cette autorisation est demandée par l'application.

Donc, en résumé, l’application n’accède peut-être pas à votre "état et identité de votre téléphone", mais si le développeur indique que son application peut être exécutée sur des appareils de 1,5 ou moins, cette autorisation sera indiquée.


la source
Avez-vous un lien vers une documentation montrant cela?
GAThrawn
developer.android.com/reference/android/os/… donne la liste complète des identificateurs de version cibles et des modifications apportées aux autorisations (entre autres) entre eux.
Stewart
Droite. Mais probablement plus "intéressant", car les applications pour les versions 1.5 et inférieures sont devenues assez rares :)
Izzy
18

Cette question me préoccupe depuis longtemps. Alors maintenant, finalement, j'ai décidé d'aller au fond des choses.

Le Playstore a une application nommée permission.READ_PHONE_STATE , qui demande READ_PHONE_STATEl’autorisation unique et ne fait rien d’autre que l’impression de toutes les données auxquelles elle peut accéder avec ou sans l’utiliser. Je l'ai installé sur mon LG Optimus 4X , enraciné sur Android 4.0.3, et révoqué l'autorisation à l'aide de LBE. Les résultats étaient plutôt intéressants, comme le montrent les captures d'écran suivantes:

Capture d'écran 1 Capture d'écran 2 Capture d'écran 3
Informations recueillies par l'application permission.READ_PHONE_STATE (cliquez sur les images pour agrandir les variantes)

Comme vous pouvez facilement le constater, même certaines informations, même inaccessibles sans autorisation, étaient librement accessibles: mon numéro de boîte vocale (remarque: oui, c’est le bon; avec mon fournisseur, c’est le raccourci clavier pour composer un numéro à partir de votre propre appareil. l'afficher librement;) À la fin de la première capture d'écran, vous voyez:

  • CALL_STATE_IDLE. Donc, aucun appel téléphonique entrant, sortant ou en cours. Aucune application n'a besoin de cette permission pour se "mettre en arrière-plan" lors d'appels entrants.

Il est même possible de voir si les données mobiles sont actives ( DATA_DISCONNECTEDj'ai utilisé le WiFi lors de la capture d'écran, comme vous pouvez le voir dans la barre de notification), dans quel pays vous êtes, votre fournisseur (y compris des données techniques sur lui), si vous avez une carte SIM, ou si vous êtes en itinérance.

Les seules choses qui ne sont pas accessibles sont donc les données d'identification: IMEI, SIMID, IMSI et votre propre numéro de téléphone.

Conclusion: cette autorisation est nécessaire uniquement à des fins d'identification, rien d'autre.

Pourquoi tant d'applications ont-elles besoin alors?

  • Pour les modules publicitaires, le plus probable 1
  • Parce que le développeur pensait en avoir besoin (comme l'indiquent certaines réponses ici) 2
  • Parce que l'application en question est conçue pour (aussi) fonctionner sur Android 1.5 et inférieur (facile à trouver, comme cela est répertorié sur Google Play ).

Les probabilités dans exactement cet ordre, IMHO.


1 Note du message de Dan sur le chat :

Les règles de Google Play interdisent désormais aux applications de se faire identifier par votre IMEI à des fins publicitaires. Toutes les bibliothèques d'annonces ont été mises à jour pour utiliser "l'identifiant publicitaire" fourni par Google Play Services, de sorte que toutes les personnes qui utilisent encore l'IMEI à cette fin doivent être signalées à Google.

Comme il est difficile pour l'utilisateur de dire en quoi l'application utilise l'IMEI, vous devez d'abord demander au développeur de vous expliquer.


2 Un autre développeur me montra une différence subtile: alors que l'autorisation n'est pas nécessaire de lire l'état de l' appel en cours (comme je l' ai fait remarquer), il pourrait être nécessaire d'enregistrer un auditeur afin d'être informé sur les changements de l'appel statut (voir: Détection des appels téléphoniques entrants et sortants sur Android ). Bien qu'il semble y avoir des moyens de gérer cela automatiquement lorsque le système appelle onPause, cela peut ne pas toujours être approprié: pensez à votre réveil. Vous souhaiterez peut-être que cela ne soit pas automatiquement arrêté lors d'un appel entrant - en particulier si votre profil est défini sur le volume de la sonnerie "muet".


3 Encore une correction de Dan : vous n'obtenez l'autorisation supplémentaire par défaut que si la version "cible" de votre application est 1.5. Si vous ciblez une version ultérieure mais que votre version minimale est 1.5, l'autorisation ne sera pas ajoutée automatiquement.


Mises à jour

  1. Intéressant qu’il existe un problème en suspens (21504) à diviser READ_PHONE_STATEen ce qui est nécessaire pour a) détecter les appels entrants et connexes (téléphonie), ainsi qu’une deuxième autorisation pour les détails d’identification (IMEI, IMSI, etc.). Ouvert le 11/2011, toujours pas travaillé. Commencez si intéressé :)
  2. Et oui, il y a un moyen d'atteindre le même (détection des appels entrants) sans l' READ_PHONE_STATEautorisation, comme par exemple souligné par Arno Welzel . Comme un appel téléphonique entrant déclencherait la sonnerie, cet événement pourrait être utilisé avec onAudioFocusChange(), ce qui ne nécessite aucune autorisation spéciale: s'il est déclenché par cela, l'application pourrait vérifier l'état de CallState (encore une fois, sans qu'aucune autorisation spéciale ne soit requise) appel entrant.
Izzy
la source
Je pense que vous devez supprimer la partie pour laquelle vous dites qu'aucune application n'a besoin de cette autorisation pour l'arrière-plan des appels entrants. Vous avez déjà souligné ce point dans la note de bas de page 2, mais c'est contradictoire. Voir aussi developer.android.com/reference/android/telephony/…
Mikel
@ Mikel Vous avez partiellement raison. Utiliser cette permission est le moyen le plus "simple" d’accomplir cette tâche, mais ce n’est pas le seul. Cela peut se faire sans, comme le signalait un développeur (était-ce sur le chat? Malheureusement, j'ai perdu le lien). Comme pour beaucoup d'autres choses, l'utilisation des API de Google facilite certaines tâches (tout en liant votre application au système éco de Google). Je ne suis pas un développeur, donc je ne peux pas dire combien de travail supplémentaire cela signifierait.
Izzy
Je ne suis pas encore un développeur Android non plus, et je conviens que certains cas d'utilisation sont couverts par onPause (). Le simple fait de dire que "Aucune application n'a besoin de cette autorisation" ne me semble pas correct. Cela ressemble plus à "certaines applications peuvent avoir besoin de cette autorisation", par exemple si elles fonctionnent en arrière-plan. Notez également que la réception de l’intention de diffusion doit sûrement être plus efficace que l’interrogation répétée de l’état du téléphone.
Mikel
@ Mikel Voir ma mise à jour. Et oui, "pas besoin du tout" peut être un peu exagéré. Peut-être que dans 0,5% de toutes les demandes actuelles, cela pourrait effectivement être nécessaire, sans alternative disponible #D Et oui encore: onPause()était ce que nous avons discuté sur le chat pour ça! Mais utiliser onAudioFocusChange()peut même être moins onéreux (le petit sondage pourrait alors être ignorable).
Izzy
10

De nombreux éditeurs de publicité utilisent cette autorisation pour obtenir l'identifiant du téléphone à toutes sortes de fins de suivi. Il existe d'autres moyens d'obtenir un identifiant unique, mais malheureusement, ils sont bogués dans les anciennes versions d'Android (l'histoire est plus compliquée, voir par exemple https://stackoverflow.com/questions/2785485/is-there-a-unique-android- device-id ou http://android-developers.blogspot.com/2011/03/identifying-app-installations.html pour une histoire plus complète).

Ainsi, si l'application utilise des publicités, il y a de fortes chances que l'application elle-même n'ait pas réellement besoin de l'autorisation READ_PHONE_STATE, seul le fournisseur de l'annonce en a besoin.

Kasper Peeters
la source
1
C'est à mon humble avis le principal problème derrière tout cela! Bien figuré.
Izzy