我的应用程序通过意图调用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........
当我尝试处理我无法持久许可的图像时。有人知道这个限制吗?你能找出任何解决方案吗?
答案 0 :(得分:1)
我知道这是一篇旧文章,但是我在应用程序中遇到了同样的问题,因此开始浏览Android源代码,发现:com.android.server.uri.UriGrantsManagerService,请参阅{{3} }。
它定义了一个private static final int MAX_PERSISTED_URI_GRANTS = 128;
除了注意到该类的私有方法中使用了常量(没有在takePersistableUriPermission()方法中调用该常量)之外,我没有确切地使用它。因此似乎是逻辑上的“罪魁祸首”。
鉴于这是一个私有静态常量,我认为在他们决定更改它之前,没有“变通方法”。
我输入了一个增强请求来跟踪此this link。