android - telefonicas - quieres permitir que facebook tenga acceso al almacenamiento del telefono
Permisos de Android: llamadas telefónicas: leer el estado del teléfono y la identidad (2)
(Respondiendo mi propia pregunta en caso de que alguien más se encuentre con este problema y lo busque).
Buscando en PackageParser.java en la fuente de Android, descubrí que el sistema asignará automáticamente
android.permission.WRITE_EXTERNAL_STORAGE and
android.permission.READ_PHONE_STATE
a cualquier aplicación que declare una versión targetSdk de menos de 4 (donut). Debe haber una razón de compatibilidad para esto, tal vez las aplicaciones que apuntan a versiones anteriores podrían suponer que tenían estos permisos sin declararlos explícitamente. Por lo tanto, si no desea que estos permisos se agreguen a su aplicación implícitamente, agregue una sección como la siguiente en AndroidManifest.xml
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="4" />
Eso es todo.
Diviértete, -Mike
Mi aplicación de Android no tiene nada que ver con las llamadas telefónicas, pero veo que cuando instalo una versión de depuración en mi dispositivo de prueba, se requieren permisos de "Llamadas de teléfono: leer el estado y la identidad del teléfono". (No menciono esto en AndroidManifest.xml
).
Me gustaría tener los permisos mínimos posibles y me pregunto si alguien sabe cómo deshacerse de esto. Build.MODEL
la parte donde estaba registrando algunas cosas de Build.MODEL
, Build.VERSION.*
, Etc. También comenté la parte donde estaba detectando la orientación paisaje / retrato pensando que ese podría ser el "estado del teléfono". Pero ninguno de esos parecía eliminar ese permiso requerido.
Encontré este informe de errores: http://code.google.com/p/android/issues/detail?id=4101 pero está marcado como funciona según lo previsto con una nota sobre los permisos correctos del mercado, pero no de otra manera. Es la experiencia de esta otra gente? (Odiaría tener que publicar en el mercado solo para probarlo.) De lo contrario, ¿alguien sabe si hay una API que puedo evitar llamar que la haga para que mi aplicación no necesite este permiso?
¡Gracias!
Registro de cambios de Android 1.6: http://developer.android.com/sdk/android-1.6.html#api
WRITE_EXTERNAL_STORAGE : permite que una aplicación escriba en el almacenamiento externo. Las aplicaciones que usan API Nivel 3 y menor recibirán implícitamente este permiso (y esto será visible para el usuario) ; Las aplicaciones que usan API Nivel 4 o superior deben solicitar explícitamente este permiso.
Pero ese es solo uno de ellos. Por algún motivo, al registro oficial de cambios le falta la información sobre READ_PHONE_STATE. La historia completa está aclarada aquí: http://blogs.zdnet.com/Burnette/?p=1369&page=3
Nuevos permisos Los programas 1.6 deben solicitar explícitamente el permiso WRITE_EXTERNAL_STORAGE para poder modificar el contenido de la tarjeta SD, y deben solicitar explícitamente el permiso READ_PHONE_STATE para poder recuperar la información del estado del teléfono. Las aplicaciones que se orientan a versiones anteriores siempre solicitarán estos permisos implícitamente.
Como puede ver, no hay forma de publicar una aplicación orientada a 1.5 o anterior sin solicitar esos permisos cuando está instalado en teléfonos con 1.6 o más.