2010-10-13 14 views
22

Mam aplikację, która rejestruje program obsługi niestandardowego identyfikatora URI w telefonie. Mogę uruchomić aplikację, tworząc link do "myapp: // act/launch" na stronach internetowych mojego telefonu. Działa to tylko wtedy, gdy moja aplikacja jest zainstalowana na urządzeniu. Co chcę zrobić, to wykryć, czy schemat URI jest obsługiwany przez przeglądarkę, a następnie monitować mój własny komunikat "pobierz aplikację, itd ...", jeśli nie znaleziono programu obsługi dla schematu URI.Wykryto, czy aplikacja jest zainstalowana, czy nie?

Czy istnieje sposób, w jaki mogę wykryć lub znaleźć listę programów obsługi schematów adresów URL w telefonie z przeglądarki internetowej?

+0

Możliwa duplikat [Sprawdź, czy jest zainstalowana aplikacja - Android] (http://stackoverflow.com/questions/18752202/check-if-application-is-installed-android) –

Odpowiedz

61

Od Android How-to's

Jeśli kiedykolwiek trzeba wiedzieć, czy dana aplikacja jest zainstalowana na urządzeniu użytkownika, można użyć PackageManager. Z klasy Context (np. Activity lub Service) możesz wywołać metodę getPackageManager(). Daje to różne metody, z których jedną jest getPackageInfo(). Poniżej znajduje się metoda, której możesz użyć. Możecie nazwać tak:

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; 
} 
+13

W szczególności wymagał, aby było to zrobione z przeglądarki internetowej. –

+3

Niezależnie: czy "uri" jest poprawną nazwą argumentu dla metody? Czy nazwa pakietu będzie lepsza? –

+0

@GlennBech: tak, nazwa _packageName_ jest bardziej opisowa niż _uri_ –

14
  1. Musisz utworzyć stronę internetową, która ląduje na użytkownika, jeśli aplikacja nie jest zainstalowany. Powiedzieć http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html

  2. Aplikacja musi zarejestrować się w jawnym przyjmującego pliku XML www.yourcompany.com, schematu „http” i param ścieżki nie App zainstalować stronę docelową w manifestu filtr zamiar:

    <!-- 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. teraz na stronie internetowej, która wywołuje aplikację podać pełny link do android_app_is_not_installed_landing_page.html następnie cokolwiek params chcesz przekazać do aplikacji:

http://www.yourcompany.com/android/ android_app_is_not_installed_landing_page.html? "> Kliknij tutaj, aby uruchomić aplikację, jeśli jest zainstalowany

Jeśli aplikacja jest zainstalowana zostanie ona uruchomiona i przeszedł całą http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html? w intencji, że musi parsować, wyodrębnić i zrobić to, co jest do zrobienia.

Jeśli aplikacja nie jest zainstalowana, to Android przeglądarka internetowa otworzy „Android aplikacja nie zainstalowany” docelową stronę http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html o . Na tej stronie powinien pojawić się komunikat o instalacji aplikacji i podanie linku w celu zainstalowania go z serwisu Android Market.

uznał ten napisać tutaj: https://groups.google.com/forum/m/?fromgroups#!topic/android-developers/RGLHkGUpRoA

+2

Po co więc prowadzić przez downvote, skoro w rzeczywistości odpowiada na pytanie, które zadawał? – boatcoder

Powiązane problemy