小编squ*_*les的帖子

如何在 Android 10 中替换 FileObserver?

android.os.FileObserver需要一个java.io.File功能。但是在 Android 10 中,谷歌限制了对著名的“存储访问框架”的访问,但您的应用程序私有目录除外。由于通过java.io.File中断和渲染访问任何内容FileObserver useless unless you intend to use it in your apps private directory. However I want to get noticed when something is changed in a certain directory on external storage. I would also like to avoid periodically checking for changes.

我尝试使用ContentResolver.registerContentObserver(uri,notifyForDescendants,observer)该方法并遇到了一些问题:

  • Uri到目前为止我插入的每一个都被接受了
  • 这既没有失败,也没有通知,如果Uri不工作
  • 我找不到文件告诉我哪个Uri真正有效

我所做的唯一工作是以下方法:

// works, but returns all changes to the external storage
contentResolver.registerContentObserver(MediaStore.Files.getContentUri("external"), true, contentObserver)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这包括所有外部存储,并且仅Uri在发生更改时返回 Media 。content://media/external/file/67226 …

android fileobserver storage-access-framework android-10.0

5
推荐指数
1
解决办法
1209
查看次数