2015-09-02 3 views
27

У меня есть приложение, которое наблюдает общий каталог на внешнем хранилище с FileObserver. Он отлично работает на устройствах Lollipop. Я хочу добавить поддержку для Marshmallow, поэтому я установил с ней планшет Nexus 9.FileObserver не работает на внешнем хранилище в Android 6.0 Marshmallow (API 23)

На устройстве 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 или снятие снимков экрана).
+0

Вы пробовали другие места на внешнем складе? Возможно, ваша проблема ограничена этим каталогом, учитывая его несколько чувствительный характер. BTW, то, что вы компилируете, не влияет на поведение вашего приложения в отношении разрешений времени выполнения; ваш 'targetSdkVersion' делает. – CommonsWare

+0

Обязательно сохраните ссылку на FileObserver где-нибудь. Если это сбор мусора, он прекратит принимать события. –

+0

Кроме того, FWIW, [есть проблема, связанная с этим] (https://code.google.com/p/android-developer-preview/issues/detail?id=3099). – CommonsWare

ответ

0

Это, кажется, ошибка в Зефир, see this link.

Это не исправлено даже в Нуге, вы можете избавиться от API всего этого FileObserver, так как совершенно бесполезно то, что на большинстве устройств это не сработает.

0

Пожалуйста, при получении любого файла из галереи, пожалуйста, получите разрешение на время работы.

 Смежные вопросы

  • Нет связанных вопросов^_^