FileObserver不适用于Android 6.0 Marshmallow(API 23)中的外部存储

feh*_*los 31 java android adb fileobserver android-6.0-marshmallow

我有一个应用程序,用于观察外部存储上的公共目录FileObserver.它在Lollipop设备上运行良好.我想添加支持Marshmallow,所以我用它设置了一个Nexus 9平板电脑.

在Marshmallow设备上,它失败了,在Lollipop设备上它没关系.在Marshmallow设备上,FileObserver它不会对由其他进程引起的文件系统事件做出反应.例如,截取屏幕截图,通过adbshell 创建文件.如果文件是由我的应用程序创建的,它可以正常工作.

Marshmallow,我要求WRITE_EXTERNAL_STORAGEREAD_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或截屏).

Div*_*oni 2

这似乎是 Marshmallow 中的一个错误,请参阅此链接

即使在 Nougat 中,这个问题也没有得到解决,您可以摆脱整个 FileObserver 的 API,因为它使得在大多数设备上无法工作的事实变得完全无用。