问题描述Android文件管理器实时监听文件变化,例如Soild Explorer,在电脑上传输文件到手机或者其他操作增加文件到手机,Soild Explorer上能够立刻显示增加的文件,并没有用户自己手动去刷新,同样的XPlayer播放器也可以问题出现的环境背景及自己尝试过哪些方法考虑过FileObserver监听文件变化和ContentObserver监听媒体库变化,但是有局限性,FileObserver貌似只能监听当前文件夹内的文件变化,并不能监听到当前文件夹内子文件夹的文件变化,若需要监听文件变化,用FileObserver的话不是要把所有文件都遍历一遍然后在所有文件的路径下都添加FileObserver,个人感觉不合适;ContentObserver的话能够监听到MediaStore.Video或者Audio或者Image的变化,但如果是MediaStore.Files下的话无法监听到文件添加的变化,文件删除的变化也只是能知道有文件被删除了,但不知具体是哪个文件。请教各位大佬,有没有方法监听到文件变化,比如Soild Explorer那样相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)你期待的结果是什么?实际看到的错误信息又是什么?
2 回答
慕雪6442864
TA贡献1812条经验 获得超5个赞
在任何一级目录页面中,调用
Loader
加载页面对应的当前目录的文件列表调用
ContentResolver.registerContentObserver(...)
监听当前目录的变化在监听目录变化的回调函数中,调用
LoaderManager.restartLoader(...)
重启Loader
,然后直接重新加载整个文件列表(不需要关心哪个文件的具体变化,逻辑也简单很多)
p.s.文件不可见的问题,大多是因为操作没有发送Intent.ACTION_MEDIA_SCANNER_SCAN_FILE
的广播,一般情况下,App都会主动发送这个广播。这个可以忽略不计,因为是没有按正规操作处理
添加回答
举报
0/150
提交
取消