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

问题描述 投票:3回答:1

我的应用程序通过意图调用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);
    }
}

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

java.lang.SecurityException: Permission Denial: opening provider........

当我尝试处理无法为其保留权限的图像时。有人知道限制吗?您能找到解决方案吗?

android uri android-permissions
1个回答
0
投票

[我知道这是一篇旧文章,但是我在应用程序中遇到了同样的问题,因此开始浏览Android源代码,并发现:com.android.server.uri.UriGrantsManagerService,请参见this link

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

除了注意到该类的私有方法中使用了常量(没有在takePersistableUriPermission()方法中调用该常量以外,我没有确切地跟踪它的用法)。因此似乎是逻辑上的“罪魁祸首”。

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

我输入了一个增强请求来跟踪此here

© www.soinside.com 2019 - 2024. All rights reserved.