众所周知,Android Q ( 10.0 )起,呼吁开发者迁移到新的分区存储方式, 简单来说,公共区域的文件,统一通过 MediaStore 或 SAF 的方式来存储访问,而 Environment 的那套 file path 访问方式被废弃。
如果我的 app 是通过 MediaStore 或 SAF 存储访问,那么我增删改的每一个内容,在数据库里都有记录,那没问题,
那如果是其他 app,开启兼容模式导致在 10.0 机器没有适配,那我通过 MediaStore 或 SAF 不就检索不到它们的信息?
更重要的是,如果我作为用户,手动从电脑中拷贝媒体文件到公共区域的目录中,这些文件我怎么在自己的 app 中扫描到?
因为首先,Environment 的方法被废弃,我不能走 file path 那套, 同时,ACTION_MEDIA_SCANNER_SCAN_FILE 广播被废弃, 并且 MediaScannerConnnection 的 scanFile 仍然是走 filePath … 对,是绝对路径!而且是文件的绝对路径!不是目录!
—— 是 Google 没有意识到这一点吗? ACTION_MEDIA_SCANNER_SCAN_FILE 的注释中憨憨地写道 —— “建议开发者通过 MediaStore 插入信息,这样就不用扫描了”(显然是没有考虑到上述两种情况啊 … )
所以 10 以及 11 的扫描工作怎么做哇,先立个帖,对此有经验的 v 友,烦请不吝赐教!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.