32

我有一个应用程序可以观察外部存储上的公共目录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或截屏)。
4

1 回答 1

1

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

即使在 Nougat 中,这也不是固定的,您可以摆脱整个 FileObserver 的 API,因为它完全无用,因为在大多数设备上,它不起作用。

于 2017-07-27T11:27:18.957 回答