¿Puedo iniciar el flujo de revisión de Play Store desde un fragmento?
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.
Debe pasar el host actual Activity
en el archivo ReviewManagerFactory.create()
.
Para obtener la actividad actual dentro de a, Fragment
puede usar getActivity()
o requireActivity()
que devolverá el host actual Activity
de 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);