2009-03-02 24 views
9

W moim programie dodaje skrót do ekranu. Ikona na ekranie wygląda dobrze, ale po dotknięciu otrzymuję:Błąd zezwolenia na skrót na ekranie głównym Androidem

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 

Czy znasz problem? Dzięki,
Isaac

Odpowiedz

9

Zdobione, dodanych w tym pod <activity> tagu aktywności:

<intent-filter> 
<action android:name="android.intent.action.MAIN"></action> 
</intent-filter> 
+0

Czy możesz pokazać nam kompletny (stały) Mainfest? –

2

Nie spotkałem się z tym osobiście, ale zrobiłem kilka badań i znalazłem następujące.

Najwyraźniej wszystko, co próbuje wywołać twoją aplikację lub jeśli twoja aplikacja ma połączenie, aby utworzyć intencję i rozpocząć działanie z jakiegoś powodu, to UID nie jest taki sam.

W ActivityManagerServer.java znajdują się poniżej oceny.

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

Mam zamiar zrobić kilka testów na ten temat i zobaczyć, czy mogę odtworzyć to w aplikacji testowej i zapewnić dodatkowe informacje zwrotne.

Upewnij się, że próbujesz wywołać publicznie wystawione działania z dowolnego powodu.

5

Coś jak to powinno działać:

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

wewnątrz deklaracji działalność w manifeście.

10

Miałem coś takiego, kiedy przypadkowo zduplikowałem tag aktywności dla jednej z moich aktywności w moim manifeście. Miałem coś takiego w mojej sekcji aplikacji.

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

Po usunięciu drugiego znacznika aktywności rzeczy zaczęły działać normalnie.

+1

Naprawiłem również mój błąd, gdy dostałem "Aplikacja nie jest zainstalowana na tym telefonie". Podążyłem za przykładami z książki i nie zauważyłem problemu z kopią i wklejaniem z duplikatem. dobry chwyt! (Byłoby jeszcze ładniej: zduplikowane działanie w manifeście) –

Powiązane problemy