Не удается разрешить метод addOnCompleteListener, когда я использовал Google Cloud Messaging - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь работать с Firebase Cloud Messaging, и у меня возникли некоторые проблемы. Я написал код для подозрения в topi c, но когда я использую в addOnCompleteListener, я получаю эту ошибку:

Невозможно разрешить метод 'addOnCompleteListener (live.jtube.app.MassegeNetsActivity, анонимный com.google . android .gms.tasks.OnCompleteListener) '

вот часть моего кода:

MassegeNetsActivity. java код:

 .....
 import com.google.android.gms.tasks.OnCompleteListener;
 import com.google.android.gms.tasks.Task;
 import com.google.firebase.messaging.FirebaseMessaging;
 import android.content.BroadcastReceiver;
 import android.content.IntentFilter;
 ..... 

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.massege_nets);

  FirebaseMessaging.getInstance().subscribeToTopic("weather")
          .addOnCompleteListener(MassegeNetsActivity.this, new OnCompleteListener<Void>() { //here i got the error
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    String msg = "תהליך הרשמה לערוץ בוצע בהצלחה!";
                    if (!task.isSuccessful()) {
                        msg = "אופס! תהליך הרישום לערוץ נכשל, אנא בדוק את החיבור שלך לאינטרנט";
                    }
                   // Log.d(TAG, msg);
                    Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
                }
            });
      ......

и вот файл build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.2"
    defaultConfig {
        applicationId "app.app.app"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 34
        versionName "4.17"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support.constraint:constraint-layout:1.1.3'
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    //firebase
    //firebase analytics
    // compile 'com.google.firebase:firebase-messaging:12.0.1'//firebase Cloud Messaging
    compile 'com.android.support:appcompat-v7:28.0.0'
    compile 'com.android.support:design:28.0.0'
    compile 'com.android.support:support-vector-drawable:28.0.0'
    compile 'com.google.firebase:firebase-core:16.0.1'
    compile 'com.google.firebase:firebase-messaging:12.0.1'
    compile 'com.google.firebase:firebase-ads:12.0.1'
    compile 'com.google.firebase:firebase-analytics:15.0.0'
    compile 'com.google.firebase:firebase-auth:15.0.0'

    //implementation 'com.google.firebase:firebase-analytics:12.0.1'
    compile 'com.android.support:support-v4:28.0.0'
    compile "com.android.support:support-compat:28.0.0"
    compile 'com.android.support:support-media-compat:28.0.0'

    testCompile 'junit:junit:4.12'
}

Я искал в Google почти 3 часа, и я не могу найти ответ, который будет работать ...

Вы можете мне помочь?

Большое спасибо!

1 Ответ

0 голосов
/ 29 марта 2020

Пример, который вы указали в своем комментарии, передается только как OnCompleteListener, а ваш код передается в качестве дополнительного аргумента MassegeNetsActivity.this. Хотя существует addOnCompleteListener, который принимает два аргумента, в этой перегрузке первым параметром является Executor, и кажется, что экземпляр Activity не является допустимым Executor объектом.

Решение это вызвать addOnCompleteListener только с слушателем:

FirebaseMessaging.getInstance().subscribeToTopic("weather")
          .addOnCompleteListener(new OnCompleteListener<Void>() {
    ...
...