Ошибка разрешения ярлыка на главном экране Android
-
03-07-2019 - |
Вопрос
В моей программе он добавляет ярлык на экран.Я вижу значок на экране нормально, но когда я нажимаю на него, я получаю:
03-01 20:00:29.410: ERROR/AndroidRuntime(796): java.lang.SecurityException: Permission Denial: starting Intent { data=http://www.example.com/ flags=0x14000000 comp={com.isaacwaller.example/com.isaacwaller.example.ExampleCut} } from ProcessRecord{435c7398 796:android.process.acore/10005} (pid=796, uid=10005) requires null
Вы знаете проблему?Спасибо,
Исаак
Решение 2
Разобрался, добавил в раздел <activity>
тег активности:
<intent-filter>
<action android:name="android.intent.action.MAIN"></action>
</intent-filter>
Другие советы
Нечто подобное произошло со мной, когда я случайно продублировал тег активности для одного из моих действий в своем манифесте.У меня было что-то подобное в разделе приложений.
<activity android:name=".ConventionHome" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="ConventionHome"></activity>
Когда я удалил второй тег активности, все стало работать нормально.
Что-то вроде этого должно работать:
<intent-filter>
<action android:name="com.example.Project.Action"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
внутри объявления Activity в манифесте.
Я тоже столкнулся с этой проблемой, и оказалось, что это произошло потому, что Activity не было доступно другим процессам.Мне пришлось добавить атрибут android:exported="true" в тег активности в моем манифесте.
Видеть http://developer.android.com/guide/topics/manifest/activity-element.html#exported Чтобы получить больше информации.
Лично я с этим не сталкивался, но провел небольшое исследование и обнаружил следующее.
По-видимому, что бы ни пыталось вызвать ваше приложение или если в вашем приложении есть вызов для создания намерения и запуска действия с каким-либо намерением, UID не тот.
В ActivityManagerServer.java есть следующие оценки.
int checkComponentPermission(String permission, int pid, int uid, int reqUid)
// If the target requires a specific UID, always fail for others.
if (reqUid >= 0 && uid != reqUid) {
return PackageManager.PERMISSION_DENIED;
}
Я собираюсь провести некоторое тестирование и посмотреть, смогу ли я воспроизвести это в тестовом приложении и предоставить дополнительные отзывы.
Убедитесь, что вы пытаетесь вызвать общедоступные действия только с помощью каких-либо намерений.