Откройте другое приложение от себя (намерение)

Я знаю, как обновить свои собственные программы, и я знаю, как открывать программы, используя предопределенный Uri (например, для смс или электронной почты)

Мне нужно знать, как я могу создать Intent для открытия MyTracks или любое другое приложение, которое я не знаю, какие намерения они слушают.

Я получил эту информацию от DDMS, но мне не удалось превратить это в Намерение, которое я могу использовать. Это взято при открытии MyTracks вручную.

Спасибо за вашу помощь

05-06 11:22:24.945: INFO/ActivityManager(76): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks bnds=[243,338][317,417] }
05-06 11:22:25.005: INFO/ActivityManager(76): Start proc com.google.android.maps.mytracks for activity com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks: pid=1176 uid=10063 gids={3003, 1015}
05-06 11:22:26.995: INFO/ActivityManager(76): Displayed activity com.google.android.maps.mytracks/com.google.android.apps.mytracks.MyTracks: 1996 ms (total 1996 ms)
134
задан Steve Haley 6 May 2010 в 10:47
поделиться

1 ответ

Во-первых, понятие «приложение» в Android немного расширено.

Приложение - технически процесс - может иметь несколько действий, услуг, поставщиков контента и / или слушателей широковещательной передачи. Если хотя бы один из них запущен, приложение запущено и работает (процесс).

Итак, вам нужно определить, как вы хотите «запустить приложение».

Хорошо ... вот что вы можете попробовать:

  1. Создайте намерение с помощью action = MAIN и category = LAUNCHER
  2. Получите PackageManager из текущий контекст с использованием context.getPackageManager
  3. packageManager.queryIntentActivity (, 0) , где намерение имеет категорию = LAUNCHER , action = MAIN или packageManager.resolveActivity (, 0) для получения первого действия с помощью main / launcher
  4. Получите ActivityInfo , который вас интересует
  5. из ActivityInfo , получите имя_пакета и имя
  6. Наконец, создайте другое намерение с помощью category = LAUNCHER , action = MAIN , componentName = new ComponentName (packageName, name) и setFlags (Intent.FLAG_ACTIVITY_NEW_TASK)
  7. Наконец, context.startActivity (newIntent)
141
ответ дан 23 November 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: