Cette question me préoccupe depuis un certain temps. Aujourd'hui, j'ai enfin décidé d'aller au fond des choses.
Le Playstore propose une application appelée permission.READ_PHONE_STATE qui demande READ_PHONE_STATE
comme seule permission, et ne fait rien d'autre que d'imprimer toutes les données auxquelles il peut accéder avec ou sans l'utiliser. Je l'ai installé sur mon LG Optimus 4X Il s'agit d'un ordinateur qui a été rooté sur Android 4.0.3, et qui a révoqué la permission en utilisant LBE. Les résultats sont assez intéressants, comme le montrent les captures d'écran suivantes :
Informations recueillies par l'application permission.READ_PHONE_STATE (cliquez sur les images pour les agrandir)
Comme vous pouvez facilement le voir, même certaines informations que le dev, bien qu'inaccessibles sans la permission, étaient librement accessibles : mon numéro de boîte aux lettres (remarque : Oui, c'est le bon ; avec mon fournisseur, c'est le raccourci lorsqu'on compose un numéro depuis son propre appareil, donc je peux l'afficher librement ;) A la fin de la première capture d'écran, vous voyez :
-
CALL_STATE_IDLE
. Donc pas d'appel téléphonique entrant, sortant, ou en cours. Aucune application n'a besoin de cette permission pour se mettre en arrière-plan sur les appels entrants.
Il est même possible de voir si les données mobiles sont actives ( DATA_DISCONNECTED
(J'étais en WiFi lorsque j'ai fait les captures d'écran, comme vous pouvez le voir dans la barre de notification), le pays dans lequel vous vous trouvez, votre fournisseur (y compris quelques données techniques sur lui), si vous avez une carte SIM, ou si vous êtes en itinérance.
Les seules choses pas accessibles donc des données d'identification : IMEI, SIMID, IMSI, et votre propre numéro de téléphone.
Conclusion : Cette autorisation n'est nécessaire qu'à des fins d'identification, rien d'autre.
Pourquoi tant d'applications en ont-elles besoin alors ?
- Pour les modules publicitaires, il est probable que 1
- Parce que le dev pensée il en a besoin (comme l'ont souligné certaines réponses ici) 2
- Étant donné que l'application en question est conçue pour fonctionner (également) sur Android 1.5 et inférieur (facile à trouver, car cela est indiqué sur le site web de l'entreprise), elle ne peut être exécutée que sur des ordinateurs portables. Google Play ).
Les probabilités sont exactement dans cet ordre, IMHO.
1 Note de Le message de Dan sur le chat :
La politique de Google Play interdit désormais aux applications d'obtenir votre IMEI pour vous identifier à des fins publicitaires. Toutes les bibliothèques publicitaires ont été mises à jour pour utiliser l'"ID publicitaire" fourni par les services Google-Play. Toute application qui utilise encore l'IMEI à cette fin doit être signalée à Google.
Comme il est difficile pour l'utilisateur de savoir à quoi sert l'application en utilisant l'IMEI, vous devez d'abord demander au développeur de vous expliquer.
2 Un autre développeur vient de me signaler une différence subtile : alors que la permission n'est pas nécessaire pour lire l'état actuel de l'appel (comme je l'ai souligné), il pourrait être nécessaire d'enregistrer une auditeur afin d'être notifié à sur changements de l'état de l'appel (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
Mais il n'est pas toujours possible de le faire : pensez à votre réveil. Vous ne voudriez peut-être pas qu'il se déclenche automatiquement arrêté lors d'un appel entrant - surtout pas lorsque votre profil est réglé sur le volume de la sonnerie "en sourdine".
3 Encore une fois, un correction de Dan : Vous n'obtenez la permission 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 la 1.5, la permission ne sera pas ajoutée automatiquement.
Mises à jour
- Intéressant qu'il y ait un question ouverte (21504) de diviser
READ_PHONE_STATE
dans ce qui est nécessaire pour a) détecter les appels entrants et connexes (téléphonie), et une deuxième permission pour les détails d'identification (IMEI, IMSI, etc). Ouvert en 11/2011, toujours pas travaillé. Démarrez-le si vous êtes intéressé :)
- Et oui, il existe un moyen d'obtenir la même chose (détection des appels entrants). sans el
READ_PHONE_STATE
l'autorisation, comme par exemple comme l'a souligné Arno Welzel . Comme un appel téléphonique entrant déclencherait la sonnerie, que pourrait être utilisé avec onAudioFocusChange()
qui ne nécessite pas de permission particulière : si elle est déclenchée par cette fonction, l'application peut vérifier le fichier État d'appel (là encore, sans autorisation spéciale) pour voir s'il y a un appel entrant.
0 votes
Ce n'est pas vraiment, pour "ouais ouais, cette application a cette permission d'envoyer des sms et de sonner un numéro premium dans votre dos" qui est ce que les gens supposez . La réponse de @Christian ci-dessous a fait mouche ! C'est légitime dans de nombreux cas, et bien souvent, les développeurs ont tendance à oublier de réduire les autorisations (peut-être un héritage des premiers jours de développement d'une application).
1 votes
@t0mm13b Je ne pense pas qu'il y ait une grande demande pour des permissions réduites en dehors des techniciens et des geeks de la vie privée (moi inclus). Donc, si les fabricants d'applications font simplement norme pour exiger l'ensemble des autorisations, les consommateurs supposeront alors que de nombreuses autorisations sont acceptables pour n'importe quelle application. Le gouvernement ne fait pas pression sur eux pour qu'ils utilisent des autorisations minimales, et jusqu'à présent le marché ne fait pas pression sur eux. En d'autres termes, il n'y a pas ou peu de frais pour que les applications requièrent beaucoup d'autorisations.