¿Por qué tantas aplicaciones requieren permiso para leer el estado y la identidad del teléfono? Específicamente:
Phone calls
read phone state and identity
Por ejemplo, Quickpedia es un portal de Wikipedia, pero quiere acceder al teléfono. ¿Cuál es la explicación para esto?
permissions
privacy
Nam G VU
fuente
fuente
Respuestas:
Permite que la aplicación lea una identificación única (un identificador de teléfono llamado IMEI ) que está asociada con su teléfono.
Por lo tanto, puede ayudar con la protección contra copias o el intento de rastrear el número de usuarios.
fuente
Hay otra razón para esto que la identificación única. Supongo que la mitad de las aplicaciones no tienen acceso a esos valores en absoluto. El problema es que para una versión inferior hasta Android 1.5 este permiso no existe. Todos podían acceder a estos valores sin solicitar algo.
Por lo tanto, si crea una aplicación que sea compatible con 1.5, este permiso se agregará automáticamente para emular la menor seguridad de Android 1.5 debido a que podría ignorar este permiso en la mayoría de las ocasiones porque tiende a ser solo un problema de compatibilidad.
fuente
La razón es que Android 1.5 y versiones anteriores no requerían que la aplicación solicitara específicamente esos permisos y los otorgó automáticamente. Desde Android 1.6, esos permisos deben ser solicitados específicamente por la aplicación. Sin embargo, si especifica que su aplicación puede ejecutarse en dispositivos con Android 1.5 y menos, entonces ese permiso se agrega a la aplicación de forma predeterminada y el mercado muestra ese permiso según lo solicitado por la aplicación.
En resumen, es posible que la aplicación no esté accediendo a su "estado e identidad del teléfono", pero si el desarrollador especificó que su aplicación puede ejecutarse en dispositivos con 1.5 o menos, se mostrará ese permiso.
fuente
Esta pregunta me ha estado molestando bastante tiempo. Así que ahora, finalmente, decidí llegar al fondo del problema.
Playstore tiene una aplicación llamada permission.READ_PHONE_STATE , que solicita
READ_PHONE_STATE
como el único permiso, y no hace nada más que imprimir todos los datos a los que puede acceder con o sin usarlo. Lo instalé en mi LG Optimus 4X , rooteado de Android 4.0.3, y revoqué el permiso usando LBE. Los resultados fueron bastante interesantes, como muestran las siguientes capturas de pantalla:Información recopilada por el permiso de la aplicación. READ_PHONE_STATE (haga clic en las imágenes para ver las variantes más grandes)
Como puede ver fácilmente, incluso alguna información que el desarrollador, aunque inaccesible sin el permiso, era de acceso libre: mi número de buzón (comentario: Sí, es el correcto; con mi proveedor ese es el acceso directo cuando marca desde su propio dispositivo, para que pueda mostrarlo libremente;) Al final de la primera captura de pantalla, verá:
CALL_STATE_IDLE
. Por lo tanto, no hay llamadas entrantes, salientes o en curso. Ninguna aplicación necesita este permiso para "en segundo plano" en las llamadas entrantes.Incluso es posible ver si los datos móviles están activos (
DATA_DISCONNECTED
; estaba en WiFi cuando tomé las capturas de pantalla, como puede ver en la barra de notificaciones), en qué país se encuentra, su proveedor (incluidos algunos datos técnicos sobre él), si tienes una tarjeta SIM o si estás en roaming.Por lo tanto, lo único que no es accesible son los datos de identificación: IMEI, SIMID, IMSI y su propio número de teléfono.
Conclusión: Este permiso solo es necesario para fines de identificación, nada más.
¿Por qué tantas aplicaciones lo necesitan entonces?
Probabilidades exactamente en este orden, en mi humilde opinión.
1 Nota de la publicación de Dan en el chat :
Como es difícil para el usuario saber para qué está usando la aplicación el IMEI, primero debe pedirle al desarrollador que le explique.
2 Otro desarrollador me señaló una sutil diferencia: aunque no es necesario el permiso para leer el estado actual de la llamada (como he señalado), podría ser necesario registrar un oyente para recibir notificaciones sobre los cambios de la llamada estado (consulte: Detección de llamadas entrantes y salientes en Android ). Si bien parece haber medios para manejar esto automáticamente cuando el sistema llama
onPause
, eso no siempre es adecuado: piense en su reloj despertador. Es posible que no desee que eso se detenga automáticamente en una llamada entrante, especialmente cuando su perfil está configurado en volumen de timbre "silenciado".3 Una vez más, una corrección de Dan : solo obtienes el permiso adicional predeterminado si la versión "objetivo" de tu aplicación es 1.5. Si apunta a una versión posterior pero su versión mínima es 1.5, no obtendrá el permiso agregado automáticamente.
Actualizaciones
READ_PHONE_STATE
en lo que se necesita para a) detectar llamadas entrantes y relacionadas (telefonía), y un segundo permiso para los detalles de identificación (IMEI, IMSI, etc.). Abierto 11/2011, todavía no ha trabajado. Marcar con estrella si está interesado :)READ_PHONE_STATE
permiso, como, por ejemplo, señaló Arno Welzel . Como una llamada telefónica entrante activaría el timbre, ese evento podría usarseonAudioFocusChange()
, lo que no requiere ningún permiso especial: si se activa por eso, la aplicación podría verificar el CallState (nuevamente, sin ningún permiso especial requerido) para ver si hay un llamada entrante.fuente
onPause()
fue lo que discutimos en el chat para eso! Pero el usoonAudioFocusChange()
puede ser menos costoso incluso (el pequeño sondeo puede ser ignorable).Muchos editores de anuncios utilizan este permiso para obtener la identificación del teléfono para todo tipo de fines de seguimiento. Hay otras formas de obtener una identificación única, pero desafortunadamente tienen errores en versiones anteriores de Android (la historia es más complicada, consulte, por ejemplo, https://stackoverflow.com/questions/2785485/is-there-a-unique-android- device-id o http://android-developers.blogspot.com/2011/03/identifying-app-installations.html para una historia más completa).
Por lo tanto, si la aplicación usa anuncios, existe una buena posibilidad de que la aplicación en sí no necesite el permiso READ_PHONE_STATE, solo el proveedor de anuncios lo necesita.
fuente