Android: как открыть другое приложение из моего приложения? - PullRequest
21 голосов
/ 27 мая 2010

Я понимаю, как использовать намерения и startActivity () при открытии другого действия в моем собственном приложении, но как запустить другое приложение?а именно:

  • Как определить, установлено ли на устройстве необходимое приложение для пользователя?
  • Как запустить это приложение?
  • Как пройтипараметры этого приложения?
  • Как найти всю эту информацию для определенного приложения (например, Adobe Reader или Google Maps)?

Ответы [ 2 ]

32 голосов
/ 28 мая 2010

Как узнать, доступно ли намерение:

  1. Попробуйте позвонить в Intent и справиться с ActivityNotFoundException, если он недоступен

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(path, "application/pdf");
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    
    try {
        startActivity(intent);
    } 
    catch (ActivityNotFoundException e) {
        Toast.makeText(OpenPdf.this, 
            "No Application Available to View PDF", 
            Toast.LENGTH_SHORT).show();
    }
    

    или

  2. Запрос диспетчера пакетов , чтобы узнать, не опередил ли он:

    PackageManager packageManager = getPackageManager();
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setType("application/pdf");
    
    List list = packageManager.queryIntentActivities(intent,
        PackageManager.MATCH_DEFAULT_ONLY);
    
    if (list.size() > 0) {
        intent.setDataAndType(path, "application/pdf");
        startActivity(intent);
    }
    

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

  1. Список доступных компонентов для приложений Google
  2. Список содержимого сторонних разработчиков @ OpenIntents
1 голос
/ 27 мая 2010

Что вы ищете: намерения и фильтры намерений .

Все, что вы хотите знать, подробно описано в руководстве разработчика Android.

http://developer.android.com/guide/topics/intents/intents-filters.html

...