我的应用充当应用选择器,替换了默认的android共享菜单:
<intent-filter>
<action android:name="android.intent.action.CHOOSER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
在此活动中,我抓住意图,然后将其共享给另一个应用程序:
Intent intent = getIntent();
Parcelable parcelable = intent.getParcelableExtra("android.intent.extra.INTENT");
Intent newIntent = (Intent) parcelable;
shareIntent.setComponent(new ComponentName(packageName, activityName));
startActivity(shareIntent);
finish();
这很好,除了我共享内容URI时。然后我的应用崩溃了:
java.lang.SecurityException: UID 10628 does not have permission to content://com.android.chrome.FileProvider/images/screenshot/15303956193093126976530267588801.jpg [user 0]
at android.os.Parcel.readException(Parcel.java:1958)
at android.os.Parcel.readException(Parcel.java:1904)
at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:4884)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1617)
at android.app.Activity.startActivityForResult(Activity.java:4564)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754)
at android.app.Activity.startActivityForResult(Activity.java:4522)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:741)
at android.app.Activity.startActivity(Activity.java:4883)
at android.app.Activity.startActivity(Activity.java:4851)
我的应用似乎没有对此URI的权限,因此由于某些原因无法执行startActivity
。我该怎么做才能避免这种情况?在这种情况下,是否可以将意图发送到正常的Android Share菜单?
答案 0 :(得分:0)
在致电addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION|Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
之前先致电Intent
上的startActivity()
。