Ошибка разрешения ярлыка домашнего экрана Android - PullRequest
10 голосов
/ 02 марта 2009

В моей программе он добавляет ярлык на экран. Я получаю значок на экране нормально, но когда я нажимаю на него, я получаю:

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

Вы знаете проблему? Спасибо,
Исаак

Ответы [ 5 ]

11 голосов
/ 21 июля 2010

У меня было нечто подобное, когда я случайно продублировал тег активности для одного из моих действий в манифесте. У меня было что-то вроде этого в моем разделе приложения.

<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>

Когда я удалил второй тег активности, все стало работать нормально.

9 голосов
/ 19 марта 2009

Разобрался, добавил это под <activity> тег активности:

<intent-filter>
<action android:name="android.intent.action.MAIN"></action>
</intent-filter>
5 голосов
/ 27 января 2011

Я тоже столкнулся с этой проблемой, и оказалось, что это потому, что активность не была подвержена другим процессам. Мне пришлось добавить атрибут android: exported = "true" в тег активности в моем манифесте.

См. http://developer.android.com/guide/topics/manifest/activity-element.html#exported для получения дополнительной информации.

5 голосов
/ 10 мая 2009

Примерно так должно работать:

<intent-filter>
    <action android:name="com.example.Project.Action"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter> 

внутри объявления Activity в манифесте.

2 голосов
/ 02 марта 2009

Я не сталкивался с этим лично, но я провел некоторое исследование и обнаружил следующее.

Очевидно, что все, что пытается вызвать ваше приложение, или если ваше приложение имеет вызов для создания намерения и запуска действия какого-либо намерения, 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;
   }

Я собираюсь провести некоторое тестирование по этому вопросу и посмотреть, смогу ли я воспроизвести это в тестовом приложении и предоставить какие-либо дополнительные отзывы.

Убедитесь, что вы пытаетесь вызывать публично открытые действия любым намерением.

...