我想使用 Android 中的存储访问框架 (SAF) 来获取大量文件 (>600) 的 uri 并将其保存在本地数据库中。
所以要获得 1 个文件的 uri,我调用:
intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION
| Intent.FLAG_GRANT_PREFIX_URI_PERMISSION
| Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
startActivityForResult(intent, RESULT_FILE_OPEN)
然后在 onActivityResult 中,我坚持授予的权限:
getContentResolver().takePersistableUriPermission(intent.getData(), Intent.FLAG_GRANT_READ_URI_PERMISSION);
但我知道Android 11 将您可以保留的权限限制为 512 。所以我想我可以使用标志Intent.FLAG_GRANT_PREFIX_URI_PERMISSION来授予对 uri 具有前缀匹配的文件的访问权限,从而减少持久化 uri 权限的数量。
但我不知道如何使用这个标志。我使用它的方式,我无法读取前缀匹配的文件。
所以我的问题是:
应该如何使用标志 Intent.FLAG_GRANT_PREFIX_URI_PERMISSION?