¿Puedo iniciar el flujo de revisión de Play Store desde un fragmento?

Resuelto Jason W asked hace 54 años • 0 respuestas

Estoy reelaborando mi aplicación y en mi nuevo flujo de aplicación, el mejor lugar para solicitar una revisión de Google Play Store es en un fragmento. Antes podía ejecutar el código de revisión sin problemas cuando estaba en una actividad. Sin embargo, ahora que he copiado el código en un fragmento, tengo dos puntos conflictivos que no estoy seguro de cómo resolver.

  • Llamemos a la actividad anterior "FormerActivity"
  • Llamemos al nuevo fragmento "NewFragment"

Entonces, el código era así (hay 2 métodos):

private void activateReviewInfo() {

        manager = ReviewManagerFactory.create(FormerActivity.this);
        Task<ReviewInfo> request = manager.requestReviewFlow();

        request.addOnCompleteListener(task -> {

            if(task.isSuccessful()) {

                reviewInfo = task.getResult();

            }
        });
    }


private void startReviewFlow() {

        if(reviewInfo != null) {

            Task<Void> flow = manager.launchReviewFlow(FormerActivity.this, reviewInfo);
            flow.addOnCompleteListener(task -> {

            });

        } else {

            // not creating a review because the object is null

        }
    }

Los problemas son:

manager = ReviewManagerFactory.create(FormerActivity.this);

&&

Task<Void> flow = manager.launchReviewFlow(FormerActivity.this, reviewInfo);

Probé todo tipo de combinaciones para reemplazar el nombre de la Actividad con el nombre del Fragmento (por ejemplo, NewFragment.this, this, NewFragment, etc.). Sé que me faltan algunos aspectos fundamentales aquí, según tengo entendido. Espero que de alguna manera estos métodos puedan aceptar un fragmento y no solo una actividad. Cualquier ayuda sería apreciada, gracias.

Jason W avatar Jan 01 '70 08:01 Jason W
Aceptado

Debe pasar el host actual Activityen el archivo ReviewManagerFactory.create().

Para obtener la actividad actual dentro de a, Fragmentpuede usar getActivity()o requireActivity()que devolverá el host actual Activityde Fragment.

En tu caso debería ser así:

// get activity instance
Activity currentActivity = getActivity(); // or requireActivity(); for non-null return type.

// create manager
ReviewManagerFactory manager = ReviewManagerFactory.create(currentActivity);

// launch review
Task<Void> flow = manager.launchReviewFlow(currentActivity, reviewInfo);
Hiren Rafaliya avatar Feb 15 '2024 16:02 Hiren Rafaliya