Conceder manualmente el permiso
Para los dispositivos rooteados, hay una manera de inyectar un permiso específico dentro del /data/system/packages.xml
que detalla todas las aplicaciones instaladas, junto con sus firmas y permisos.
El permiso mencionado anteriormente es <item name="android.permission.WRITE_MEDIA_STORAGE" granted="true" flags="0" />
que normalmente se concede sólo a las aplicaciones del sistema. Esta línea debe añadirse bajo el <perms>
nodo del nombre del paquete que uno desea conceder acceso permanente al almacenamiento externo, ya sea una tarjeta SD o una unidad conectada a través de OTG.
Para que Android reconozca el nuevo permiso, se necesita un reinicio .
Revocación de la autorización
Para revocar el mencionado permiso, basta con eliminar el <item name="android.permission.WRITE_MEDIA_STORAGE" granted="true" flags="0" />
línea que ellos mismos añadieron.
Alternativas automatizadas
Si no se quiere editar manualmente packages.xml
pero tiene Xposed, es posible conseguir un resultado similar utilizando el XInternalSD
módulo. Al activarlo, entre en su configuración y desactive todas las casillas excepto la que está junto a Full access to external SD card
.
Esto, dependiendo de la versión de Android en uso, es capaz de conceder acceso de lectura y escritura a los medios de comunicación externos. Está probado y funciona hasta Nougat 7.1.2. Este método no es granular, por lo que cualquier aplicación podrá acceder a cualquier medio externo.
No estoy afiliado a XInternalSD, ni a su desarrollador.