Ответ 1
Это, кажется, ошибка в Marshmallow, см. эту ссылку.
Это не исправлено даже в Nougat, вы можете избавиться от API всего этого FileObserver, так как совершенно бесполезно то, что на большинстве устройств он не будет работать.
У меня есть приложение, которое наблюдает открытый каталог на внешнем хранилище с 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
устройствоadb
или снятие снимков экрана).Это, кажется, ошибка в Marshmallow, см. эту ссылку.
Это не исправлено даже в Nougat, вы можете избавиться от API всего этого FileObserver, так как совершенно бесполезно то, что на большинстве устройств он не будет работать.