2012-06-14 4 views
8

Я пытаюсь начать основную деятельность из BroadcastReceiver. Я не хочу указывать имя класса активности, но использовать действие и категорию для android для определения основного вида деятельности.Android Намерение для начала Основная активность приложения

Он, похоже, не работает.

Отправив Код:

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

Я получаю эту ошибку:

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

Любые идеи?

+0

Почему вы не хотите, чтобы указать фактическую основную деятельность по имени? –

+1

@Austyn Использовать код в библиотеке, например. – Pataar

ответ

7

Это неправильный способ начать работу.
попробуйте этот код вместо:

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

У меня есть только контекст приложения вместо MainActivity.class в проекте библиотеки. Как я могу запустить основную деятельность приложения из проекта библиотеки? – Karthick

+0

@ Karthick: нет проблем с использованием контекста приложения вместо MainActivity.class, но - если вы не будете использовать флаг Intent.FLAG_ACTIVITY_NEW_TASK, в этом случае вы получите исключение, потому что для начала действия из приложения/контекста службы требуется этот флаг. –

+0

Если я использую контекстные средства, как я могу использовать? Intent notificationIntent = новый Intent (контекст, (активность) (PushNotification.mActiveContext)); получение ошибки. Мне нужно это в сценарии ниже ссылки. http://stackoverflow.com/questions/18843118/launch-android-application-from-library-project – Karthick

1

Даже я пытался запустить MainActivity с помощью библиотеки деятельности.

И это работало для меня:

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

Убедитесь, что вы добавить активность в манифесте библиотеки!

+0

И вот исключение, когда я пробовал то же самое: android.content.ActivityNotFoundException: Никакой активности не найдено для обработки Intent – TienLuong

4

Копирование из другой темы:

Это работает с уровня 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); 
} 
Смежные вопросы