我有一个应用程序可以观察外部存储上的公共目录FileObserver
。它在Lollipop
设备上运行良好。我想添加对 的支持Marshmallow
,所以我用它设置了一个 Nexus 9 平板电脑。
在 Marshmallow 设备上,它失败了,在 Lollipop 设备上它没问题。在 Marshmallow 设备上,FileObserver
不会对其他进程引起的文件系统事件做出反应。例如截屏,通过adb
shell 创建文件。如果文件是由我的应用程序创建的,它工作正常。
在 上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
或截屏)。