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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta