enlace abierto de google play store en la versión móvil android

88

Tengo un enlace de mis otras aplicaciones en mi última aplicación y las abro de esa manera.

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.

Cuando intento abrir desde mi teléfono, el teléfono me pregunta si quiero usar un navegador o Google Play y si elijo el segundo, abre la versión móvil de Google Play Store.

¿Puedes decirme cómo puede suceder esto de una vez? Me refiero a que no me preguntes, sino que abro directamente la versión móvil de Google Play, la que veo mientras la abro directamente desde el teléfono.

jinete Fantasma
fuente
1
Ojalá el penúltimo párrafo fuera cierto para mí. El uso del enlace http que se encuentra aquí: developer.android.com/distribute/googleplay/promote/… no solicita al usuario que elija la aplicación o el navegador. Siempre asume el navegador. Desafortunadamente, tampoco puedo usar el market://protocolo. ¿Alguien más está viendo este comportamiento?
SilithCrowe

Respuestas:

265

Querrá utilizar el marketprotocolo especificado :

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 bloqueará en cualquier dispositivo que no tenga Market instalado (el emulador, por ejemplo). Por lo tanto, sugeriría algo 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)));
}

Mientras usa getPackageName()from Contexto subclase del mismo para mayor coherencia (¡gracias @cprcrack !). Puede encontrar más información sobre Market Intents aquí: enlace .

Eric
fuente
Abrir lo siguiente en el navegador no abre Google Play: market: // details? Id = pandora
IgorGanapolsky
1
El ID es el nombre del paquete, no el nombre de la aplicación. Pruebe market://details?id=com.PandoraTV(asumiendo que esta es la aplicación que desea).
Eric
9
Esta respuesta trata sobre el uso del market://prefijo de su propia aplicación, no de un sitio web a través del navegador. Puedo dar fe de su funcionalidad (en las versiones 2.3, 3.x, 4.0, 4.1 y 4.2) y funciona con el navegador estándar, Chrome Beta 25 y Chrome 18.
Eric
1
Sí, Chrome es una aplicación, pero eso requeriría que sus creadores [Google] usen este código, no las personas [tú] que crean los sitios web. Tal como está, este código es para ayudar a las personas que están estructurando enlaces específicamente desde sus aplicaciones.
Eric
2
Puede utilizar getPackageName()para recuperar automáticamente la identificación de la aplicación.
cprcrack
6

El siguiente código puede ayudarlo a mostrar el enlace de la aplicación de Google Play 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 el enlace de 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();

            } 
Chirag Ghori
fuente
3

Puede usar la biblioteca de Intents de Android para abrir la página de su aplicación en Google Play de esa manera:

Intent intent = IntentUtils.openPlayStore(getApplicationContext());
startActivity(intent);
Dmitriy Tarasov
fuente
2
Tenga en cuenta que se desaconsejan las respuestas de solo enlace , las respuestas SO deben ser el punto final de la búsqueda de una solución (frente a otra escala de referencias, que tienden a quedarse obsoletas con el tiempo). Considere agregar una sinopsis independiente aquí, manteniendo el enlace como referencia.
kleopatra
4
Sería útil incluir una exención de responsabilidad de que esta es su biblioteca y que la función se implementa prácticamente de la misma manera que la respuesta aceptada.
ta.speot.is el
1

Puede comprobar si la aplicación Google Play Store está instalada y, si este es el caso, puede utilizar 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);
Paolo Rovelli
fuente
0

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

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

fuente