众所周知,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 友,烦请不吝赐教!