2010-10-13 11 views
22

Ho un'applicazione che registra un gestore per l'URI personalizzato sul telefono. Sono in grado di avviare l'applicazione creando un collegamento a "myapp: // act/launch" dalle mie pagine web del telefono. Funziona solo se la mia applicazione è installata sul dispositivo. Quello che voglio fare è rilevare se lo Schema URI è supportato dal browser e poi chiedere al mio messaggio "scarica l'app ecc ..." se il gestore dello schema URI non viene trovato.Rileva un'applicazione installata o no?

C'è un modo per rilevare o trovare l'elenco di gestori di schemi URL sul telefono dal browser Web?

+0

Eventuali duplicati di [Controlla se è installata l'applicazione - Android] (http://stackoverflow.com/questions/18752202/check-if-application-is-installed-android) –

risposta

61

Da Android How-to's

Se hai bisogno di sapere se una particolare applicazione è installata sul dispositivo dell'utente, è possibile utilizzare il PackageManager. Da una classe Context (ad esempio un'attività o un servizio) è possibile chiamare getPackageManager(). Questo ti dà una varietà di metodi, uno dei quali è getPackageInfo(). Di seguito è riportato un metodo che è possibile utilizzare. Si potrebbe chiamare in questo modo:

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

Ha richiesto specificamente che venga eseguito da un browser web. –

+3

Indipendentemente da: è "uri" un nome argomento corretto per il metodo? PackageName sarebbe migliore? –

+0

@GlennBech: sì, _packageName_ è più descrittivo di _uri_ –

14
  1. È necessario creare una pagina web che le terre utente sul se l'applicazione non è installato. Dire http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html

  2. L'applicazione ha bisogno di registrarsi in serie file XML manifest www.yourcompany.com, schema “http” e il parametro percorso di applicazione non installare pagina di destinazione nel filtro intento palese:

    <!-- 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. Ora, nella pagina web che richiama la vostra applicazione si specifica completa link per android_app_is_not_installed_landing_page.html seguito da qualunque params si desidera passare al app:

http://www.yourcompany.com/android/ android_app_is_not_installed_landing_page.html? '> Clicca qui per lanciare l'applicazione se è installato

Se l'applicazione viene installata sarà lanciato e passò tutta la http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html?' nell'intento che è necessario analizzare, estrarre il e fare tutto ciò che è supposto fare .

Se l'applicazione non è installata, il browser Web di Android si aprirà “app Android non installato” atterraggio pagina http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html o . Quella pagina dovrebbe messaggio utente per installare l'applicazione e fornire il collegamento per installarlo dal marketplace Android.

pensa che questa scrivere qui: https://groups.google.com/forum/m/?fromgroups#!topic/android-developers/RGLHkGUpRoA

+2

Quindi, perché l'unità di downvote, dal momento che in realtà risponde alla domanda che stava chiedendo? – boatcoder