2012-06-06 21 views
86

Tengo el enlace de mis otras aplicaciones en mi última aplicación, y las abro de esa manera.abrir el enlace de google play store en la versión móvil de Android

Uri uri = Uri.parse("url"); 
Intent intent = new Intent (Intent.ACTION_VIEW, uri); 
startActivity(intent); 

este código abre la versión del navegador de google play store.

Al intentar abrir desde mi teléfono, el teléfono pregunta si quiero usar un navegador o google play y si elijo el segundo, abre la versión móvil de google play store.

¿Puede decirme cómo puede suceder esto a la vez? Quiero decir, no me pregunten, sino que abran directamente la versión móvil de Google Play, la que veo mientras la abro directamente desde el teléfono.

+1

deseo de que el penúltimo párrafo era cierto para mí. Utilizando el enlace http que se encuentra aquí: http://developer.android.com/distribute/googleplay/promote/linking.html#OpeningDetails no solicita al usuario que elija la aplicación o el navegador. Siempre asume el navegador. Desafortunadamente, tampoco puedo usar el protocolo 'market: //'. ¿Alguien más está viendo este comportamiento? – SilithCrowe

Respuesta

260

usted querrá utilizar el protocolo especificado market:

final String appPackageName = "com.example"; // Can also use getPackageName(), as below 
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName))); 

Tenga en cuenta que esto se colgará en cualquier dispositivo que no tenga instalado el mercado (el emulador, por ejemplo). Por lo tanto, sugeriría algo así como:

final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object 
try { 
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName))); 
} catch (android.content.ActivityNotFoundException anfe) { 
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + appPackageName))); 
} 

Si bien la utilización de getPackageName()Context o subclase de los mismos para la consistencia (gracias @cprcrack!). Puede encontrar más información sobre Intentos de mercado aquí: link.

+0

Al abrir lo siguiente en el navegador no se abre Google Play: market: // details? Id = pandora –

+1

El ID es el nombre del paquete, no el nombre de la aplicación. Pruebe 'market: // details? Id = com.PandoraTV' (suponiendo que [esto] (https://play.google.com/store/apps/details?id=com.PandoraTV) es la aplicación que desea). – Eric

+0

Intenta abrir cualquier enlace que comience con market: // en Chrome para Android. Verá que solo realiza un resultado de búsqueda, no abre la tienda de Google Play.Es irrelevante si el nombre del paquete de Pandora es correcto aquí, puedo darle cien nombres de paquetes correctos y no cambiará el problema. –

3

Puede utilizar Android Intents biblioteca para abrir la página de la aplicación en Google Play como esa:

Intent intent = IntentUtils.openPlayStore(getApplicationContext()); 
startActivity(intent); 
+2

Tenga en cuenta que [las respuestas solo de enlace] (http://meta.stackoverflow.com/tags/link-only-answers/info) no se recomiendan, las respuestas SO deberían ser el punto final de una búsqueda de una solución (vs. otra escala más de referencias, que tienden a quedar obsoletas en el tiempo). Considere agregar una sinopsis independiente aquí, manteniendo el enlace como referencia. – kleopatra

+4

Sería útil incluir un descargo de responsabilidad de que esta es su biblioteca y [la función está implementada] (http://grepcode.com/file/repo1.maven.org/maven2/com.dmitriy-tarasov/android-intents/ 1.1.0/com/dmitriy/tarasov/android/intents/IntentUtils.java # IntentUtils.openPlayStore% 28com.dmitriy.tarasov.android.intents.Context% 29) más o menos de la misma manera que la respuesta aceptada. –

5

a continuación pueden código que ayuda para la aplicación de visualización de enlace de google play dolor en la versión móvil.

para el enlace de la aplicación:

Uri uri = Uri.parse("market://details?id=" + mContext.getPackageName()); 
Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri); 

    try { 
     startActivity(myAppLinkToMarket); 

     } catch (ActivityNotFoundException e) { 

     //the device hasn't installed Google Play 
     Toast.makeText(Setting.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show(); 
       } 

Para enlace Desarrollador:

Uri uri = Uri.parse("market://search?q=pub:" + YourDeveloperName); 
Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri); 

      try { 

       startActivity(myAppLinkToMarket); 

      } catch (ActivityNotFoundException e) { 

       //the device hasn't installed Google Play 
       Toast.makeText(Settings.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show(); 

      } 
1

se puede comprobar si el Google Play Store aplicación está instalada y, si este es el caso, puede usar el protocolo "market: //".

final String my_package_name = "........." // <- HERE YOUR PACKAGE NAME!! 
String url = ""; 

try { 
    //Check whether Google Play store is installed or not: 
    this.getPackageManager().getPackageInfo("com.android.vending", 0); 

    url = "market://details?id=" + my_package_name; 
} catch (final Exception e) { 
    url = "https://play.google.com/store/apps/details?id=" + my_package_name; 
} 


//Open the app page in Google Play store: 
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
startActivity(intent); 
0

página Abrir la aplicación en Google Play:

Intent intent = new Intent(Intent.ACTION_VIEW, 
       Uri.parse("market://details?id=" + context.getPackageName())); 
startActivity(intent); 
Cuestiones relacionadas