授予应用程序的 Android 最大持久 uri 权限数限制为 128?

Dav*_*vid 5 android uri android-permissions

我的应用程序通过 Intent 调用 Android 图像库,然后用户可以选择多个图像。事实证明,下面列出的代码(已在其他帖子中报告)对我来说效果很好。

if(Utils.isKitkat())
{
    final int takeFlags = data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION);
    ContentResolver resolver = getActivity().getContentResolver();
    for (Uri uri : images)
    {
        resolver.takePersistableUriPermission(uri, takeFlags);
    }
}
Run Code Online (Sandbox Code Playgroud)

无论如何,我注意到授予我的应用程序的最大持久 uri 数限制为 128。如果我选​​择超过 128 个 uri,我会收到错误消息:

java.lang.SecurityException: Permission Denial: opening provider........
Run Code Online (Sandbox Code Playgroud)

当我尝试处理无法保留权限的图像时。有人知道限制吗?你能想出任何解决办法吗?

tfr*_*ger 1

我知道这是一篇旧帖子,但我在我的应用程序中遇到了同样的问题,因此开始查看 Android 源代码,并发现:com.android.server.uri.UriGrantsManagerService,请参阅此链接

它定义了一个private static final int MAX_PERSISTED_URI_GRANTS = 128;

我没有追踪它的具体使用方式,只是注意到该常量在该类的私有方法中使用,该方法在 takePersistableUriPermission() 方法中被调用。所以看起来像是合乎逻辑的“罪魁祸首”。

鉴于这是一个私有静态常量,我认为在他们决定更改它之前,没有“解决方法”。

我在此处输入了一个增强请求来跟踪此情况。