由于更改与访问共享存储的授权相关,因此似乎不再可能通过这种方法搜索 pdf 类型的所有文档(使用 requestLegacyExternalStorage =“false”):
ContentResolver cr = context.getContentResolver();
Uri uri = MediaStore.Files.getContentUri("external");
String[] projection = null;
String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
+ MediaStore.Files.FileColumns.MEDIA_TYPE_NONE;
String[] selectionArgs = null;
String sortOrder = null;
Cursor allNonMediaFiles = cr.query(uri, projection, selection, selectionArgs, sortOrder);
检查此链接:媒体数据限制 https://developer.android.com/training/data-storage/files/external-scoped#media-data-restrictions
我看到的唯一解决方案是使用 SAF 以递归方式扫描所有共享存储树,在我看来,这在资源上非常昂贵且荒谬。
还有人有其他想法吗?
范围存储的基本思想正是为了避免这种行为,你无法知道用户手机中的某个位置是否存在某些文件。您只需请求访问存储树的权限并按照您所说的扫描所有内容即可。即使在这种情况下,用户也可以选择与根目录不同的文件夹,因此您的应用程序将仅限于该文件夹。这个想法可以是执行扫描,然后使用在树 URI 和后代的修改上安排的作业(作业服务)来更新数据库以保持同步。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)