Regex
Regex

Reputation: 599

Firebase & Play Core onCompleteListener Incompatible Types

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

Answers (3)

Victor Marcoianu
Victor Marcoianu

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

kaigalmane
kaigalmane

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

Orest Shemeliuk
Orest Shemeliuk

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

Related Questions