Обнаружить приложение установлено или нет? - PullRequest
23 голосов
/ 13 октября 2010

У меня есть приложение, которое регистрирует обработчик для пользовательского URI на телефоне. Я могу запустить приложение, сделав ссылку на «myapp: // act / launch» с веб-страниц моего телефона. Это работает, только если мое приложение установлено на устройстве. Я хочу определить, поддерживается ли схема URI из браузера, а затем запросить мое собственное сообщение «Пожалуйста, загрузите приложение и т. Д.», Если обработчик для схемы URI не найден.

Есть ли способ определить или найти список обработчиков схем URL на телефоне из веб-браузера?

Ответы [ 3 ]

62 голосов
/ 16 февраля 2011

С Android How-to

Если вам когда-либо понадобится узнать, установлено ли определенное приложение на устройстве пользователя, вы можете использовать PackageManager. Из класса Context (например, Activity или Service) вы можете вызвать getPackageManager (). Это дает вам множество методов, одним из которых является getPackageInfo (). Ниже приведен метод, который вы можете использовать. Вы можете назвать это так:

isAppInstalled("com.simexusa.campusmaps_full");

private boolean isAppInstalled(String packageName) {
    PackageManager pm = getPackageManager();
    boolean installed = false;
    try {
       pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
       installed = true;
    } catch (PackageManager.NameNotFoundException e) {
       installed = false;
    }
    return installed;
}
14 голосов
/ 06 марта 2013
  1. Вам необходимо создать веб-страницу, на которую попадает пользователь, если приложение не установлены. Скажи http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html

  2. Приложение должно зарегистрироваться в манифесте XML-файла хоста www.yourcompany.com, схема «http» и параметр пути к приложению, не устанавливающему целевую страницу в Фильтр намерения манифеста:

    <!-- These intents are used to launch the app from the web page-->
    <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="http"
            android:host="www.yourcompany.com"
            android:path="/android/android_app_is_not_installed_landing_page.html" 
      />
    </intent-filter>
    
  3. Теперь на веб-странице, которая вызывает ваше приложение, вы указываете полную ссылку на android_app_is_not_installed_landing_page.html с последующим параметры, которые вы хотите передать в приложение:

http://www.yourcompany.com/android/ android_app_is_not_installed_landing_page.html? '> Нажмите здесь, чтобы запустить приложение, если оно установлено

Если приложение установлено, оно будет запущено и передано полностью http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html?' в том смысле, что нужно разобрать, извлечь и делай что угодно должен делать.

Если приложение не установлено, откроется веб-браузер Android Целевая страница «Приложение Android не установлено» http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html о , На этой странице должно появиться сообщение пользователю, чтобы установить приложение и предоставить ссылка для его установки с Android Marketplace.

нашел это записать здесь: https://groups.google.com/forum/m/?fromgroups#!topic/android-developers/RGLHkGUpRoA

0 голосов
/ 12 апреля 2018

В моем обычае Helper.java

public static boolean isPackageInstalled(Context context, String packageName)
{
    PackageManager pm = context.getPackageManager();
    try {
        pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
        Log.d("Tag",packageName + " not installed");
    }
    return false;
}

Позвоните по

Helper.isPackageInstalled(yourActivity.this,"app_package_name")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...