API 26+: el permiso WRITE_EXTERNAL_STORAGE siempre se deniega
He cambiado mi aplicación para apuntar a la API 27 y ahora no se puede otorgarWRITE_EXTERNAL_STORAGE
permisograntResult
es siempre-1
.
Mi aplicación necesita este permiso ya que no usa espacio privado de almacenamiento externo de aplicaciones (queno requiere WRITE_EXTERNAL_STORAGE
a partir de API 19).
Sé que en API 26 ha habidocambios de comportamiento para permisos. Sin embargo, esto no explica mi problema.
Estoy solicitando ambosREAD_EXTERNAL_STORAGE
yWRITE_EXTERNAL_STORAGE
permisos de forma estándar:
ActivityCompat.requestPermissions(activity, new String[] {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, requestCode);
(ambos permisos se declaran a través de<uses-permission
en manifiesto).
Aparece el cuadro de diálogo y hago clic en "Permitir":
Sin embargo por dentroonRequestPermissionsResult
devolución de llamada estoy recibiendo un-1
(denegado) paraWRITE_EXTERNAL_STORAGE
(y0
(concedido) paraREAD_EXTERNAL_STORAGE
)
¿No debería ser el resultado0
para ambos desde que solicité y, presumiblemente, concedí ambos?
He intentado solicitarWRITE_EXTERNAL_STORAGE
solo, pero en este caso el diálogo no aparece en absoluto.
Un detalle más: acabo de comprobar el manifiesto combinado enbuild/intermediates/manifests/full/debug
y noté queWRITE_EXTERNAL_STORAGE
permiso tiene atributoandroid:maxSdkVersion="18"
(No existe tal atributo en mi manifiesto). Esto podría estar sucediendo porque mi aplicación tieneminApiVersion=21
, pero no estoy seguro.