#android #android-intent #android-securityexception
#Android #android-намерение #android-securityexception
Вопрос:
При запуске моей деятельности я получаю следующее исключение.
java.lang.SecurityException-Not allowed to start activity Intent { flg=0x4000000 cmp=[MY_ACTIVITY] (has extras)}-
[android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1696),
android.app.Instrumentation.execStartActivity(Instrumentation.java:1488),
android.app.Activity.startActivityForResult(Activity.java:3401),
android.app.Activity.startActivityForResult(Activity.java:3357),
android.app.Activity.startActivity(Activity.java:3597),
android.app.Activity.startActivity(Activity.java:3565), ...]
Код довольно прямолинейный.
Создаем намерение, убеждаемся с помощью getPackageManager().queryIntentActivities, что есть действие, отфильтрованное этим намерением, и выполняем startActivity (намерение)
Есть идеи?
Комментарии:
1. Пожалуйста, опубликуйте полную трассировку стека и некоторый код того, что вы пытаетесь сделать.
2. у вас есть обновления по вашей проблеме? есть что-нибудь о том, как это исправить? Время от времени мы получаем похожие отчеты о сбоях.
3. @RicardoBelchior Привет, нет, эта проблема больше не возникает. В основном это происходило, когда в моем приложении был сторонний sdk, который раньше запускался в другом процессе. Это было что-то на их стороне, из-за чего мое приложение выдавало эти ошибки. Извините, это не сильно помогает.
4. такая же проблема, не удается распознать основную причину
Ответ №1:
Смотрите исходный код. Мы можем обнаружить, что основной причиной исключения является ActivityManager.START_PERMISSION_DENIED
:
case ActivityManager.START_PERMISSION_DENIED:
throw new SecurityException("Not allowed to start activity "
intent);
Итак, когда другой процесс хочет выполнить какой-либо компонент в вашем приложении, доступ к которому возможен только внутри, это вызовет это исключение. Другими словами, у вызывающего процесса нет разрешения, объявленного в android:permission
атрибуте вашего компонента, или для android:exported
атрибута установлено значение false.