在Android 6.0棉花糖(API 23)中,FileObserver无法在外部存储上运行

我有一个应用程序,使用FileObserver观察外部存储上的公共目录。 它在Lollipop设备上正常工作。 我想添加对Marshmallow支持,所以我设置了一个Nexus 9平板电脑。

在棉花糖设备上,它失败了,在棒棒糖设备上是可以的。 在Marshmallow设备上, FileObserver不会对由其他进程导致的文件系统事件做出反应。 例如截图,通过adb shell创build文件。 它工作正常,如果这些文件是由我的应用程序创build的。

Marshmallow ,我要求从Manifest.xml WRITE_EXTERNAL_STORAGEREAD_EXTERNAL_STORAGE权限。

当我用API 23编译时,我也确保我调用ActivityCompat.requestPermissions()

当我用API 22编译时,我只依赖于Manifest.xml

如果我观察/data/data/my-package-name上的东西,它将起作用。

如果我观察/storage/emulated/0/Pictures/Screenshots上的东西,它会失败。

有没有人testingFileObserver considreing所有以下? :

  • Marshmallow设备
  • API 23和API 22?
  • 外置储存
  • 由观察应用程序以外的其他进程创build的文件(例如adb或截图)。

Solutions Collecting From Web of "在Android 6.0棉花糖(API 23)中,FileObserver无法在外部存储上运行"