Reputation: 599
I'm trying to add in-app review in an activity that has Firebase auth, but I get this error:
error: incompatible types: <anonymous com.google.android.gms.tasks.OnCompleteListener> cannot be converted to com.google.android.play.core.tasks.OnCompleteListener }).addOnCompleteListener(new OnCompleteListener() {
I have tried to add this to add play core listener, but it says "already defined in a single-type import"
I also tried to use OnSuccessListener instead of OnCompleteListener, the error no longer shows, but in-app review dialog doesn't show.
Note: in-app review dialog shows when I remove Firebase Auth.
This is my activity code:
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.play.core.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.play.core.review.ReviewInfo;
import com.google.android.play.core.review.ReviewManager;
import com.google.android.play.core.review.ReviewManagerFactory;
import com.google.android.play.core.tasks.OnFailureListener;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
public void _startInAppReview () {
final ReviewManager reviewManager = ReviewManagerFactory.create(this);
reviewManager.requestReviewFlow().addOnCompleteListener(new OnCompleteListener<ReviewInfo>() {
@Override
public void onComplete(@NonNull Task<ReviewInfo> task) {
if(task.isSuccessful()){
ReviewInfo reviewInfo = task.getResult();
reviewManager.launchReviewFlow(MainActivity.this, reviewInfo).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
//listner fail
}
}).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
}
});
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
}
});
}
Upvotes: 4
Views: 2566
Reputation: 630
For me, the problem was in the build.gradle(:app) file. I was using:
implementation 'com.google.android.play:review-ktx'
instead of:
implementation 'com.google.android.play:core-ktx'
Upvotes: 0
Reputation: 59
I resolved this issue like below.
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.play.core.tasks.Task;
ReviewManager manager = ReviewManagerFactory.create(this);
Task<ReviewInfo> request = manager.requestReviewFlow();
request.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
ReviewInfo reviewInfo = task.getResult();
Task<Void> flow = manager.launchReviewFlow(MainActivity.this, reviewInfo);
flow.addOnCompleteListener(task2 -> {
sharedPreferences.edit().putString("lastShowedDate",dateFormat.format(Calendar.getInstance().getTime())).apply();
});
} else {
}
});
mFirebaseRemoteConfig.fetch()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull com.google.android.gms.tasks.Task<Void> task) {
if(task.isSuccessful()){
mFirebaseRemoteConfig.activate();
checkForUpdate();
}
}
});
Upvotes: 1
Reputation: 21
it seems that you are using wrong listener -
import com.google.android.gms.tasks.OnCompleteListener;
try to remove the above import and add this one
com.google.android.play.core.tasks.OnCompleteListener;
Upvotes: 0