java - FileObserver no funciona en el almacenamiento externo en Android 6.0 Marshmallow(API 23)
adb android-6.0-marshmallow (1)
Esto parece ser un error en Marshmallow, vea este enlace .
Esto no está solucionado incluso en Nougat, podría deshacerse de la API de todo este FileObserver, ya que hace completamente inútil el hecho de que en la mayoría de los dispositivos no funcionará.
Tengo una aplicación que observa un directorio público en el almacenamiento externo con FileObserver
. Funciona bien en dispositivos Lollipop
. Quiero agregar soporte para Marshmallow
, así que configuro una tableta Nexus 9 con ella.
En el dispositivo Marshmallow, falla, en el dispositivo Lollipop está bien. En el dispositivo Marshmallow, FileObserver
no reacciona a los eventos del sistema de archivos causados por otros procesos. Por ejemplo, tomando una captura de pantalla, creando archivos a través de adb
shell. Funciona bien si los archivos son creados por mi aplicación.
En Marshmallow
, READ_EXTERNAL_STORAGE
permisos WRITE_EXTERNAL_STORAGE
y READ_EXTERNAL_STORAGE
de Manifest.xml
.
Cuando compilo con la API 23, también me aseguro de llamar a ActivityCompat.requestPermissions()
.
Cuando compilo con API 22, solo confío en Manifest.xml
.
Funciona si observo cosas en /data/data/my-package-name
.
Falla si observo cosas en /storage/emulated/0/Pictures/Screenshots
.
¿Alguien ha probado FileObserver
teniendo en cuenta todo lo siguiente? :
- Dispositivo de
Marshmallow
- API 23 y API 22?
- almacenamiento externo
- archivos creados por algún otro proceso que no sea la aplicación de observación (por ejemplo,
adb
o captura de pantalla).