android - studio - request permissions request code
¿Tengo que declarar tanto WRITE_EXTERNAL_STORAGE como READ_EXTERNAL_STORAGE? (2)
Es mejor ser explícito y declarar ambos permisos, pero declarar solo android.permission.WRITE_EXTERNAL_STORAGE
agregará automáticamente android.permission.READ_EXTERNAL_STORAGE
a tu APK en el momento de la compilación.
Puede usar el comando aapt dump badging
en un APK para ver que Android considera el uso del permiso de escritura para dar a entender que usted también quiere permiso de lectura.
Aquí hay algunos resultados de aapt para un APK mío donde declaré solo 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''
¿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 omiten esta información importante.
READ_EXTERNAL_STORAGE
solo existe a partir de Jelly Bean (Nivel 16). Según los documentos , todas las aplicaciones a partir 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 soliciten explícitamente el acceso de lectura con este permiso. Si su aplicación ya solicita acceso de escritura, también obtendrá acceso de lectura automáticamente. Hay una nueva opción de desarrollador para activar la restricción de acceso de lectura, para que los desarrolladores prueben sus aplicaciones en función de cómo se comportará Android en el futuro.
Por lo tanto, debe declararlo para una compatibilidad futura, pero esto podría no ser la fuente de su problema, a menos que esté usando un teléfono Jelly Bean y configure la opción de desarrollador "Proteger almacenamiento USB" opción.