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

时间:2015-06-12 12:22:40

标签: android uri android-permissions

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

当我尝试处理我无法持久许可的图像时。有人知道这个限制吗?你能找出任何解决方案吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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