我有两个应用程序:app1 和 app2。
App2有:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.android.provider.ImageSharing"
android:exported="false"
android:grantUriPermissions="true" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/paths" />
</provider>
路径.xml:
<paths>
<files-path name="my_images" path="images/"/>
</paths>
App2 在其 Activity 中从 App1 接收请求以获取图像的 URI。一旦确定了 URI,App2 Activity 就会执行以下操作:
Intent intent = new Intent();
intent.setDataAndType(contentUri, getContentResolver().getType(contentUri));
int uid = Binder.getCallingUid();
String callingPackage = getPackageManager().getNameForUid(uid);
getApplicationContext().grantUriPermission(callingPackage, contentUri,
Intent.FLAG_GRANT_READ_URI_PERMISSION);
setResult(Activity.RESULT_OK, intent);
finish();
从 App2 收到结果后,App1 执行以下操作:
Uri imageUri = data.getData();
if(imageUri != null) {
ImageView iv = (ImageView) layoutView.findViewById(R.id.imageReceived);
iv.setImageURI(imageUri);
}
在 App1 中,从 App2 返回时,出现以下异常:
java.lang.SecurityException: Permission Denial: 从 ProcessRecord{52a99eb0 3493:com.android.App1.app/u0a57} (pid=3493, uid=10057) 打开提供程序 android.support.v4.content.FileProvider 不是从用户识别码 10058
我究竟做错了什么 ?