2010-10-13 23 views
22

Tengo una aplicación que registra un controlador para URI personalizado en el teléfono. Puedo iniciar la aplicación haciendo un enlace a "myapp: // act/launch" desde las páginas web de mi teléfono. Esto funciona solo si mi aplicación está instalada en el dispositivo. Lo que quiero hacer es detectar si el esquema URI es compatible desde el navegador y luego solicitar mi propio mensaje diciendo "descargue la aplicación, etc ..." si no se encuentra el controlador para el esquema URI.¿Detecta una aplicación instalada o no?

¿Hay alguna forma de que pueda detectar o encontrar la lista de controladores de esquema de URL en el teléfono desde el navegador web?

+0

duplicado posible de [Comprobar si se ha instalado la aplicación - Android] (http://stackoverflow.com/questions/18752202/check-if-application-is-installed-android) –

Respuesta

61

De Android How-to's

Si alguna vez necesita saber si una aplicación particular, se instala en el dispositivo del usuario, puede utilizar el PackageManager. Desde una clase de contexto (por ejemplo, una actividad o un servicio) puede llamar a getPackageManager(). Esto le proporciona una variedad de métodos, uno de los cuales es getPackageInfo(). A continuación hay un método que puedes usar. Se le puede llamar así:

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

Exigió específicamente que se realice desde un navegador web. –

+3

Independientemente: ¿es "uri" un nombre de argumento apropiado para el método? Sería packageName ser mejor? –

+0

@GlennBech: sí, _packageName_ es más descriptivo que _uri_ –

14
  1. Es necesario crear una página web que usuario accede a si la aplicación no está instalada . Decir http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html

  2. La aplicación tiene que registrarse en el manifiesto de acogida archivo XML www.yourcompany.com, esquema de “http” y el parámetro camino hacia la aplicación no instalar página de destino en el filtro de manifiesto propósito:

    <!-- 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. Ahora en la página web que invoca la aplicación especifica el link completo android_app_is_not_installed_landing_page.html seguido por cualquier params desea pasar a la aplicación:

http://www.yourcompany.com/android/ android_app_is_not_installed_landing_page.html? '> Haga clic aquí para iniciar la aplicación si se instala

Si la aplicación está instalada que se pondrá en marcha y se pasa toda http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html?' con la intención de que tenga que analizar, extraer el y hacer lo que sea que se espera que haga .

Si la aplicación no está instalada, el navegador web de Android se abrirá “aplicación Android no se instala” página de destino http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html o . Esa página debe enviar un mensaje al usuario para instalar la aplicación y proporcionar el enlace para instalarlo desde el mercado de Android.

encontraron esta redactar aquí: https://groups.google.com/forum/m/?fromgroups#!topic/android-developers/RGLHkGUpRoA

+2

Entonces, ¿por qué el drive by downvote, ya que en realidad responde a la pregunta que estaba haciendo? – boatcoder

Cuestiones relacionadas