Abrir ficha Google Play desde la aplicación

Lleva a los usuarios de tu aplicación Android a la ficha de Google Play para que dejen su calificación y valoración, para así mejorar la posición en resultados de búsqueda y recibir feedback de tus usuarios.

Seguramente no es la primera vez que lo ves. La gran mayoría de aplicaciones Android, tras un tiempo de uso, nos suelen mostrar un Dialog donde se nos pide que dejemos una valoración en la ficha de Google Play de la app.

Valoración de aplicaciones en Google Play

Generalmente como usuarios, muchos de nosotros no solemos dejar nuestra opinión (por buena o mala que sea) después de haber descargado y probado una aplicación nueva. Y es que este gesto por nuestra parte, puede ayudar a muchos otros usuarios a decidir si dicha aplicación merece la pena probarla. Del mismo modo, si crees que a esa aplicación le ‘falta algo’, también puedes proponerlo en los comentarios, y ver si el desarrollador tiene intención de añadirla en un futuro.

Hay que tener en cuenta que las valoraciones pueden ser modificadas por parte del usuario a lo largo del tiempo. Así que no es extraño ver a usuarios que participan activamente en las valoraciones, valorar primero con 2 o 3 estrellas, porque consideran que al app es buena pero tiene ‘algunos puntos flojos’ , y posteriormente volver a valorarla pasado un tiempo teniendo en cuenta los cambios y nuevas funciones añadidas.

Sin más, si tienes aplicaciones subidas a Google Play, es interesante pedir al menos una vez (sin ser pesado) a tus usuarios que dediquen 2 minutos a valorar tu app en la ficha de Google Play.

La forma más común es mostrando un dialog con un pequeño mensaje que toque la fibra del usuario y le haga dejar su valoración, además de mostrar un botón de «Valorar ahora» y otro de «No valorar» (usa la imaginación en los textos de llamada a la acción), deberías añadir un ‘CheckBox’ que permita al usuario no ver este mensaje cada vez que inicie la aplicación, o al menos hasta su nueva actualización. Aunque en este artículo solo nos centraremos en el código para abrir la ficha de Play Store una vez pulsado el botón ‘Valorar’, en los siguientes artículos aprenderás a crear el Dialog y a controlar cómo y cuando debes mostrarlo al usuario.

Dialog de valoración en Google Sheets

-«¡Manos al teclado!«

El código completo

Primeramente te copio la función que hace la magia, detallamos su funcionamiento y vemos cómo utilizarla.

public static void AbrirCalificacionesApp(Context ctx ) {
        String id = ctx.getPackageName();
        Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("market://details?id=" + id));

        //Variable de control
        boolean market = false;

        // Buscamos todas las aplicaciones que pueden abrir el Intent
        final List<ResolveInfo> apps = ctx.getPackageManager()
                .queryIntentActivities(intent, 0);

        //Recorremos los resultados devueltos
        for (ResolveInfo app: apps) {

            //Si se encuentra el paquete "vending"
            if (app.activityInfo.applicationInfo.packageName
                    .equals("com.android.vending")) {


                ActivityInfo infoAct = app.activityInfo;
                ComponentName Compo = new ComponentName(
                        infoAct.applicationInfo.packageName,
                        infoAct.name
                );

                //Nos aseguramos que no se abre/añade a la pila de nuestra actividad
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                // Se reasigna la tarea si es necesario "TASK REPARENTING"
                intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);


                //Flag necesario para asegurar que, aunque GPlay ya esté abierto,
                // este se moverá a la página de nuestra app
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                //Solo permitimos a GPlay abrir este intent
                intent.setComponent(Compo);
                ctx.startActivity(intent);
                market = true;


            }


        }
        //Si llegamos aquí, no se ha encontrado el paquete de GPlay
        //Lanzamos intent con url normal
        if (!market) {
            Intent intentNavegador = new Intent(Intent.ACTION_VIEW,
                    Uri.parse("https://play.google.com/store/apps/details?id="+id));
            ctx.startActivity(intentNavegador);
        }
    }

El funcionamiento es muy sencillo, a parte, en cada línea de código encontrarás su respectivo comentario. Con esta función conseguiremos abrir Google Play (si está instalada) directamente, sin ningún tipo de ‘Chooser’ o ‘Selector de aplicación’ que haga elegir al usuario entre ‘Abrir en navegador’ o ‘Abrir con Google Play’. De no contar con Google Play en el sistema, abriríamos directamente el navegador, llevando al usuario a un sitio u otro ahorrándole el paso del ‘Chooser‘.

El código por partes

El primer paso es obtener el nombre del paquete de la app, crear un Intent específico para ser abierto con Google Play. Date cuenta que la uri que le pasamos lleva «market://» como protocolo. Creamos una boolean de control y pasamos a listar todas las aplicaciones instaladas en el sistema que sean capaces de abrir el Intent. Esto correspondería a estas líneas:

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

boolean market = false;
final List<ResolveInfo> apps = ctx.getPackageManager()
        .queryIntentActivities(intent, 0);

for (ResolveInfo app: apps) {

Verificamos que la aplicación encontrada capaz de abrir el intent corresponde al nombre de paquete «com.android.vending«:

if (app.activityInfo.applicationInfo.packageName.equals("com.android.vending")) {

Seguidamente añadimos ciertos Flags al intent para que Google Play muestre correctamente la Intent que le pedimos. Estas funciones son propias de los ciclos de vida de Actividades y Tareas internas de ejecución. Es un tema bastante extenso como para intentar tratarlo en unas pocas líneas. De todas maneras en este artículo tienes toda la información al respecto :

Android Developers: Tareas y pila de actividades

https://developer.android.com/guide/components/tasks-and-back-stack?hl=es-419
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Posteriormente con intent.SetComponent(Compo), filtramos que solo dicha app pueda abrir el Intent. Seguidamente iniciamos la Actividad.

En el caso que no se encuentre ninguna aplicación con el nombre de paquete propio de Google Play, pasaremos directamente un enlace con protocolo https://, que por defecto solo pueden abrirlo las aplicaciones tipo navegador.

 if (!market) {
            Intent intentNavegador = new Intent(Intent.ACTION_VIEW,
                    Uri.parse("https://play.google.com/store/apps/details?id="+id));
            ctx.startActivity(intentNavegador);
        }

Bien, si has llegado aquí espero que este pequeño código haya podido ayudarte. Si te ha gustado el contenido no dudes en compartirlo y dejarme tu comentario más abajo.

¡Nos vemos en el próximo artículo!

También te podría gustar...

Ads Blocker Image Powered by Code Help Pro

Bloqueador de anuncios detectado

Por favor, desactiva tu bloqueador de anuncios para este sitio web. Sabemos que la publicidad puede resultarte molesta, pero esta es la única manera de mantener la web de forma gratuita y accesible para todo el mundo.