Проверяем установлено ли приложение на устройстве. Запуск Android приложения из другого Android приложения

Android позволяет запустить из одного приложения другое приложение, если это необходимо.

Процесс запуска построен на основе стандартного механизма Intent’ов, который позволяет не только запустить другое приложение, но и проверить его наличие на устройстве.

Для того чтобы запустить приложение или проверить установлено ли оно на устройстве, нам необходимо обратиться к менеджеру пакетов. Точнее к методу getLaunchIntent класса PackageManager. Этот метод принимает только один параметр – имя пакета приложения в виде обычной строки.

Доступ к менеджеру пакетов возможен при помощи метода getPackageManager класса Context.

context.getPackageManager();

Если мы планируем работать с менеджером пакетов из объекта класса наследника Context (например, Activity), то обращение к объекту класса Context можно опустить.

Ниже приведён пример создания Intent’а для запуска Android приложения в Activity.

Intent intent = getPackageManager().getLaunchIntentForPackage("com.example.app");

Вместо «com.example.app» нужно указать реальное полное имя пакета того приложения, которое мы желаем запустить.

Далее необходимо проверить установлено ли запускаемое приложение на устройстве. Если мы попытаемся запустить приложение, которого нет программа завершится с фатальной ошибкой.

Проверка осуществляется предельно просто. Если приложение с указанным нами пакетом не установлено Intent не будет создан и соответствующая ему переменная будет равна null.

Если же приложение установлено и Intent создан успешно, то устанавливаем для Intent’a флаг операции FLAG_ACTIVITY_NEW_TASK и запускаем приложение как обычную Activity.

if (intent != null) {
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

Таким образом, можно не только проверить наличие на устройстве любого приложения и запустить его. Однако важно учитывать особенности поведения Intent’а при установленном флаге операции FLAG_ACTIVITY_NEW_TASK.

Флаг операции FLAG_ACTIVITY_NEW_TASK запускает приложение только если оно на данный момент ещё не было запущено.

Если приложение уже запущено и работает в фоновом режиме нового запуск выполнен не будет. Вместо этого система просто переключится на уже запущенное приложение.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *