2013-04-19 1 views
1

Я хочу, чтобы запустить все установленные приложения из моего application.Here я получаю все установленные приложенияКак запускать приложения из другого приложения?

List<ApplicationInfo> applicationInfoList = packageManager.getInstalledApplications(PackageManager.GET_ACTIVITIES | PackageManager.GET_META_DATA); 
if(applicationInfoList != null && !applicationInfoList.isEmpty()){ 
    Collections.sort(applicationInfoList, new ApplicationInfo.DisplayNameComparator(
      packageManager)); 
    for (ApplicationInfo applicationInfo : applicationInfoList) { 
     Intent intent = packageManager.getLaunchIntentForPackage(applicationInfo.packageName); 
     if(intent != null){ 
      ComponentName componentName = intent.getComponent(); 
      //add componenet to a list 
     } 

    } 
} 

Но я не могу запустить некоторые приложения, такие как контакты и имя класса phone.The является «ResolverActivity» для этих приложений. Как я запускаю эти приложения из своих приложений?

Заранее спасибо

+0

вы можете использовать IntentFilter –

+0

Как я могу использовать эту карту и Latitude приложения также показывает этот вопрос , –

+0

Использовать намерение и назвать имя пакета приложений для обеда aap – Dilip

ответ

1

Это потому, что контакты и телефон того же приложение, как и карты и широта. У них, как правило, много запусков.

Итак, у вас есть два варианта:

  1. Стик с вашим утверждением, что вы хотите, чтобы «запустить все установленные приложения», в этом случае существующий код является правильным (пользователь будет выбирать, показывать ли Контакты или телефон), или

  2. Делайте то, что делает домашний экран запуск, который является «запуск все спускаемой деятельности», в этом случае вы собираетесь об этом неправильно

Для последних используйте queryIntentActivities() для MAIN/LAUNCHERIntent и используйте результаты, чтобы создать свой список. Here is a sample application, который демонстрирует это.

0

для запуска приложения вы можете попробовать это:

 // start the app by invoking its launch intent 
     Intent i = getPackageManager().getLaunchIntentForPackage(applicationInfo.packageName); 
     try { 
      if (i != null) { 
       startActivity(i); 
      } else { 
       i = new Intent(applicationInfo.packageName); 
       startActivity(i); 
      } 
     } catch (ActivityNotFoundException err) { 
      Toast.makeText(ListInstalledApps.this, "Error launching app", Toast.LENGTH_SHORT).show(); 
     } 

см это: tutorial1, tutorial2, thread stackoverflow