¿Tengo que declarar WRITE_EXTERNAL_STORAGE y READ_EXTERNAL_STORAGE?
¿Es suficiente declarar <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
o también tengo que declarar <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
? Los Javadocs omitieron esta importante información.
- Permisos múltiples de Android 6.0
- Permiso: INJECT_EVENTS para Instrumenation a otras aplicaciones
- Android - ¿Cómo conozco todos los métodos que requieren un cierto permiso?
- SecurityException con grantUriPermission al compartir un archivo con FileProvider
- Android OS 2.2 Permisos: No tengo ni idea de por qué este simple código no funciona. ¿Qué estoy haciendo mal?
- ¿Valgrind no puede ejecutar la herramienta memcheck en el sistema operativo Android?
- Pantalla negra de la cámara Android
- Phonegap permisos de Android, config.xml y complementos
- ¿Cómo eliminar el permiso específico al crear una aplicación para Android con gradle?
- Todavía el permiso denegado después de agregar "WRITE_EXTERNAL_STORAGE" en AndroidManifest.xml
- SecurityException: Permiso Negación: lectura (sólo en emulador)
- Facebook SDK 3.8: permiso publish_actions no devuelto
- Negación de permisos de MediaDocumentsProvider
READ_EXTERNAL_STORAGE
sólo existe a partir de Jelly Bean (Nivel 16). Según los documentos , todas las solicitudes como de Jelly Bean tienen ese permiso, incluso sin declararlo:
Proporciona acceso de lectura protegido al almacenamiento externo. En Android 4.1 por defecto todas las aplicaciones aún tienen acceso de lectura. Esto se cambiará en una versión futura para requerir que las aplicaciones explícitamente soliciten acceso de lectura utilizando este permiso. Si su aplicación ya solicita acceso de escritura, obtendrá automáticamente acceso de lectura también. Hay una nueva opción de desarrollador para activar la restricción de acceso de lectura, para que los desarrolladores prueben sus aplicaciones en contra de cómo se comportará Android en el futuro.
Por lo tanto, debe declararlo para compatibilidad futura, pero esto puede no ser el origen de su problema, a menos que esté utilizando un teléfono Jelly Bean y establezca la opción de desarrollador "Proteger almacenamiento USB" opción.
Es mejor ser explícito y declarar ambos permisos, pero declarar sólo android.permission.WRITE_EXTERNAL_STORAGE
agregará automáticamente android.permission.READ_EXTERNAL_STORAGE
a tu APK en el momento de la compilación.
Puede utilizar el comando aapt dump badging
en un APK para ver que Android considera que el uso del permiso de escritura implica que también desea permiso de lectura.
He aquí algunos resultados de aapt para un APK mío donde declaré sólo WRITE_EXTERNAL_STORAGE
en mi manifiesto:
uses-permission:'android.permission.WRITE_EXTERNAL_STORAGE' uses-permission:'android.permission.READ_EXTERNAL_STORAGE' uses-implied-permission:'android.permission.READ_EXTERNAL_STORAGE', 'requested WRITE_EXTERNAL_STORAGE'
- Biblioteca de interfaz de usuario de validación de formularios de Android
- ¿Cómo agregar un título en el diseño del cajón de navegación?