我试图接受图像与我的应用程序发送到服务器。设置意图过滤器非常简单,它就像一个魅力。我似乎无法弄清楚的事情是我需要从意图中的uri中检索文件路径的方式。从操作收到的意图发送在URI上产生SecurityException
我收到我的活动意图与此过滤器
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/jpeg" />
<data android:mimeType="image/png" />
<data android:mimeType="image/gif" />
</intent-filter>
通过尝试处理URI通过调用takePersistableUriPermission(URI,modeFlags)来获取文件路径我得到这个错误:
java.lang.SecurityException: No persistable permission grants found for UID 10098 and Uri 0 @ content://media/external/images/media/124
我使用的逻辑适用于从我的应用程序中请求图像,但从应用程序外部接收意图会产生错误。
KitKat及以上:
final int flags = data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
final String[] imageColumns = {MediaStore.Images.Media.DATA};
getActivity().getContentResolver().takePersistableUriPermission(uri, flags);
String id = uri.getLastPathSegment().split(":")[1];
Cursor imageCursor = context.managedQuery(getStorageUri(), imageColumns, MediaStore.Images.Media._ID + "=" + id, null, null);
您是否在Android 6.0及以上版本发生了此错误? –
因为你设置了android:exported =“false”,这意味着其他进程无法访问这个Activity。所以你把它设置为true,并做同样的事情,它不会崩溃 –
@SanjayKakadiya没有kitkat和以上,只是测试确定。 – SjoerdvGestel