2010-10-13 15 views
22

Ich habe eine Anwendung, die einen Handler für benutzerdefinierte URI auf dem Telefon registriert. Ich bin in der Lage, die Anwendung zu starten, indem ich einen Link zu "myapp: // act/launch" von meinen Handy-Webseiten aus mache. Dies funktioniert nur, wenn meine Anwendung auf dem Gerät installiert ist. Was ich tun möchte, ist festzustellen, ob das URI-Schema vom Browser unterstützt wird und dann eine eigene Nachricht mit der Aufschrift "bitte lade die App usw." an, wenn der Handler für das URI-Schema nicht gefunden wird.Erkennen, ob eine Anwendung installiert ist oder nicht?

Gibt es eine Möglichkeit, die Liste der URL-Schema-Handler auf dem Telefon über den Webbrowser zu finden oder zu finden?

+0

Mögliche Duplikat [Überprüfen Sie, ob Anwendung installiert ist - Android] (http://stackoverflow.com/questions/18752202/check-if-application-is-installed-android) –

Antwort

61

Von Android How-to's

Wenn Sie jemals wissen müssen, ob eine bestimmte Anwendung auf dem Gerät des Benutzers installiert ist, können Sie den Paketmanager verwenden. Aus einer Context-Klasse (z. B. einer Aktivität oder einem Service) können Sie getPackageManager() aufrufen. Dies gibt Ihnen eine Vielzahl von Methoden, von denen getPackageInfo() ist. Unten ist eine Methode, die Sie verwenden könnten. Man könnte es so nennen:

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

Er forderte ausdrücklich, dass es von einem Webbrowser getan wird. –

+3

Unabhängig davon: Ist "uri" ein richtiger Argumentname für die Methode? Wäre Paketname besser? –

+0

@GlennBech: ja, _packageName_ ist beschreibender als _uri_ –

14
  1. Sie benötigen eine Web-Seite, dass der Benutzer landet auf erstellen, wenn die App nicht installiert. Sprich http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html

  2. Die App in Manifest XML-Datei Host registrieren muss www.yourcompany.com, Schema „http“ und den Pfad param App nicht Zielseite in das Manifest Intent-Filter installieren:

    <!-- 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. nun in der Web-Seite, die Ihre App im App übergeben Sie geben volle Link zu android_app_is_not_installed_landing_page.html gefolgt von was auch immer params Sie ruft:

http://www.yourcompany.com/android/ android_app_is_not_installed_landing_page.html? ‚> Klicken Sie hier die App zu starten, wenn es

installiert ist Wenn die App es gestartet wird installiert und ganze http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html weitergegeben?‘ in der Absicht, dass es analysieren muss, extrahieren Sie die und tun, was auch immer es ist soll tun.

Wenn die App nicht installiert ist, dann ist der Android Web-Browser „Android App nicht installiert“ Zielseite http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html o geöffnet. Diese Seite sollte dem Benutzer die Nachricht senden, dass er die App installiert und den Link zur Verfügung stellt, um ihn vom Android Marketplace zu installieren.

fanden diese aufzuschreiben hier: https://groups.google.com/forum/m/?fromgroups#!topic/android-developers/RGLHkGUpRoA

+2

Warum also die Fahrt per Downvote, da sie tatsächlich die Frage beantwortet, die er gestellt hat? – boatcoder

Verwandte Themen