2012-06-14 18 views
8

Ich versuche, die Hauptaktivität von innerhalb eines BroadcastReceiver zu starten. Ich möchte den Namen der Aktivitätsklasse nicht angeben, sondern die Aktion und die Kategorie für Android verwenden, um die Hauptaktivität herauszufinden.Android Intent zu starten Hauptaktivität der Anwendung

Es scheint nicht zu funktionieren.

Senden Code:

Intent startIntent = new Intent(); 

startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startIntent.setAction(Intent.ACTION_MAIN); 
startIntent.setPackage(context.getPackageName()); 
startIntent.addCategory(Intent.CATEGORY_LAUNCHER);   
context.startActivity(startIntent); 

ich diesen Fehler:

Caused bt: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.xyz.abc (has extras) }

Irgendwelche Ideen?

+0

Warum würden Sie nicht die eigentliche Haupttätigkeit mit Namen angeben mögen? –

+1

@Austyn Um den Code in einer Bibliothek zum Beispiel zu verwenden. – Pataar

Antwort

7

Dies ist nicht der richtige Weg zu startenActivity.
diesen Code versuchen Sie stattdessen:

Intent startIntent = new Intent(context, MainActivity.class); 
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
context.startActivity(startIntent); 
+0

Ich habe nur den Kontext der Anwendung statt MainActivity.class im Bibliotheksprojekt. Wie kann ich die Hauptaktivität der Anwendung aus dem Bibliotheksprojekt starten? – Karthick

+0

@Karthick: Es gibt kein Problem bei der Verwendung von Anwendungskontext anstelle von MainActivity.class, aber - wenn Sie das Flag Intent.FLAG_ACTIVITY_NEW_TASK nicht verwenden, erhalten Sie in diesem Fall eine Ausnahme, da das Starten von Aktivitäten aus dem Anwendungs ​​/ Service-Kontext erforderlich ist diese Flagge. –

+0

Wenn ich Kontext verwende, wie kann ich verwenden? Intent notificationIntent = new Intent (Kontext, (Aktivität) (PushNotification.mActiveContext)); Fehler bekommen. Ich brauche das im folgenden Link-Szenario. http://stackoverflow.com/questions/18843118/launch-android-application-from-library-project – Karthick

1

Auch versucht, ich hatte die MainActivity über eine Bibliothek Aktivität zu starten.

Und das funktionierte für mich:

Intent startIntent = new Intent(); 
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startIntent.setPackage(getApplicationContext().getPackageName()); 
getApplicationContext().startActivity(startIntent); 

Stellen Sie sicher, dass die Aktivität in Ihrer Bibliothek Manifest hinzufügen!

+0

Und hier ist eine Ausnahme, wenn ich das gleiche versucht: android.content.ActivityNotFoundException: Keine Aktivität gefunden Intent zu behandeln – TienLuong

4

Kopie von einem anderen Thema:

Das funktioniert seit API Stufe 3 (Android 1.5):

private void startMainActivity(Context context) throws NameNotFoundException { 
    PackageManager pm = context.getPackageManager(); 
    Intent intent = pm.getLaunchIntentForPackage(context.getPackageName()); 
    context.startActivity(intent); 
} 
Verwandte Themen