为了账号安全,请及时绑定邮箱和手机立即绑定

Android如何实时监听文件变化?例如Soild Explorer

Android如何实时监听文件变化?例如Soild Explorer

慕神8447489 2019-03-12 19:34:57
问题描述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个赞

  1. 在任何一级目录页面中,调用Loader加载页面对应的当前目录的文件列表

  2. 调用ContentResolver.registerContentObserver(...)监听当前目录的变化

  3. 在监听目录变化的回调函数中,调用LoaderManager.restartLoader(...)重启Loader,然后直接重新加载整个文件列表(不需要关心哪个文件的具体变化,逻辑也简单很多)

p.s.文件不可见的问题,大多是因为操作没有发送Intent.ACTION_MEDIA_SCANNER_SCAN_FILE的广播,一般情况下,App都会主动发送这个广播。这个可以忽略不计,因为是没有按正规操作处理


查看完整回答
反对 回复 2019-03-12
  • 2 回答
  • 0 关注
  • 1943 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信