Мое приложение действует как средство выбора приложений, заменяя стандартное меню общего доступа для 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 в таких случаях?