2012-06-14 9 views
8

Próbuję rozpocząć główną działalność od wewnątrz BroadcastReceiver. Nie chcę podawać nazwy klasy działania, ale aby użyć działania i kategorii dla Androida, aby obliczyć główne działanie.Android Zamiar rozpoczęcia Główna działalność aplikacji

To nie wydaje się działać.

Wysyłanie Kod:

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

otrzymuję ten błąd:

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

jakieś pomysły?

+0

Dlaczego nie chcesz określić rzeczywistą aktywność głównego po imieniu? –

+1

@Austyn Aby użyć kodu na przykład w bibliotece. – Pataar

Odpowiedz

7

to nie jest właściwy sposób na rozpoczęcie działalności.
wypróbować ten kod zamiast:

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

Mam tylko kontekst aplikacji zamiast MainActivity.class w projekcie biblioteki. Jak uruchomić główną działalność aplikacji z projektu bibliotecznego? – Karthick

+0

@Karthick: nie ma problemu z użyciem kontekstu aplikacji zamiast MainActivity.class, ale - jeśli nie użyjesz flagi Intent.FLAG_ACTIVITY_NEW_TASK, otrzymasz w tym przypadku wyjątek, ponieważ uruchomienie działania z kontekstu aplikacji/usługi wymaga ta flaga. –

+0

Jeśli używam kontekstu, jak mogę użyć? Intent notificationIntent = new Intent (kontekst, (działanie) (PushNotification.mActiveContext)); błąd. Potrzebuję tego w poniższym scenariuszu łącza. http://stackoverflow.com/questions/18843118/launch-android-application-from-library-project – Karthick

1

Nawet ja usiłował uruchomić główną działalność poprzez działalność biblioteki.

I to pracował dla mnie:

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

Upewnij się dodać aktywność w manifeście biblioteki głównej!

+0

A tutaj jest wyjątek, gdy próbowałem to samo: android.content.ActivityNotFoundException: Nie znaleziono żadnej aktywności do obsługi Intent – TienLuong

4

skopiować z innego tematu:

Działa od szczebla API 3 (Android 1.5):

private void startMainActivity(Context context) throws NameNotFoundException { 
    PackageManager pm = context.getPackageManager(); 
    Intent intent = pm.getLaunchIntentForPackage(context.getPackageName()); 
    context.startActivity(intent); 
} 
Powiązane problemy