У меня есть приложение, которое наблюдает открытый каталог на внешнем хранилище с FileObserver
.
Он отлично работает на устройствах Lollipop
. Я хочу добавить поддержку Marshmallow
, поэтому я установил с ней планшет Nexus 9.
На устройстве Marshmallow он не работает, на устройстве Lollipop это нормально.
На устройстве Marshmallow FileObserver
не реагирует на события файловой системы, вызванные другими процессами. Например. сняв скриншот, создавая файлы через оболочку adb
.
Он отлично работает, если файлы созданы моим приложением.
В Marshmallow
я запрашиваю разрешения WRITE_EXTERNAL_STORAGE
и READ_EXTERNAL_STORAGE
от Manifest.xml
.
При компиляции с API 23 я также убеждаюсь, что я вызываю ActivityCompat.requestPermissions()
.
Когда я компилирую с API 22, я просто полагаюсь на Manifest.xml
.
Он работает, если я наблюдаю материал на /data/data/my-package-name
.
Это не удается, если я наблюдаю материал на /storage/emulated/0/Pictures/Screenshots
.
Кто-нибудь проверил FileObserver
, считая все следующее:
-
Marshmallow
устройство - API 23 и API 22?
- внешнее хранилище
- файлы, созданные каким-либо другим процессом, чем приложение наблюдения (например,
adb
или снятие снимков экрана).