Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓工作室问题;将变量'refreshedToken'类型更改为'Task_Java_Android_Firebase_Firebase Cloud Messaging - Fatal编程技术网

Java 安卓工作室问题;将变量'refreshedToken'类型更改为'Task

Java 安卓工作室问题;将变量'refreshedToken'类型更改为'Task,java,android,firebase,firebase-cloud-messaging,Java,Android,Firebase,Firebase Cloud Messaging,既然FirebaseInstanceId在Android Studio中已被弃用,我如何更正这段代码 字符串refreshedToken=FirebaseInstanceId.getInstance.getToken 我尝试将其更改为: String refreshedToken=FirebaseMessaging.getInstance.getToken 但是当我这样做的时候,我会得到一个错误,说 将变量“refreshedToken”类型更改为“Task” 我的全部代码是: import a

既然FirebaseInstanceId在Android Studio中已被弃用,我如何更正这段代码

字符串refreshedToken=FirebaseInstanceId.getInstance.getToken

我尝试将其更改为:

String refreshedToken=FirebaseMessaging.getInstance.getToken

但是当我这样做的时候,我会得到一个错误,说

将变量“refreshedToken”类型更改为“Task”

我的全部代码是:

import android.app.Application;

import androidx.multidex.MultiDexApplication;

import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.messaging.FirebaseMessaging;

public class MyApplication extends MultiDexApplication {

    @Override
    public void onCreate() {
        super.onCreate();

        FirebaseDatabase.getInstance().setPersistenceEnabled(true);

        FirebaseMessaging.getInstance().subscribeToTopic("fireblogappnotification");
         String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    }
}


它给你这个错误是因为FirebaseMessaging.getInstance.getToken;具有任务的返回类型&您正在使用字符串

所以,您可以做的是添加侦听器&等待任务完成并从中获取令牌

详情如下:

Task<String> refreshedToken = FirebaseMessaging.getInstance().getToken();
        refreshedToken.addOnCompleteListener(new OnCompleteListener<String>() {
            @Override
            public void onComplete(@NonNull @NotNull Task<String> task) {
                if (task.isSuccessful()){
                    String token = task.getResult();
                }
            }
        });

它给你这个错误是因为FirebaseMessaging.getInstance.getToken;具有任务的返回类型&您正在使用字符串

所以,您可以做的是添加侦听器&等待任务完成并从中获取令牌

详情如下:

Task<String> refreshedToken = FirebaseMessaging.getInstance().getToken();
        refreshedToken.addOnCompleteListener(new OnCompleteListener<String>() {
            @Override
            public void onComplete(@NonNull @NotNull Task<String> task) {
                if (task.isSuccessful()){
                    String token = task.getResult();
                }
            }
        });

您将收到以下错误:

将变量“refreshedToken”类型更改为“Task”

因为您试图将Task类型的对象保存到String类型的对象中,这在Java中实际上是不可能的,这是因为这两个类之间没有继承关系

为了获得令牌,您需要附加一个侦听器。因此,请尝试以下代码行:

Task<String> tokenTask = FirebaseMessaging.getInstance().getToken();
tokenTask.addOnCompleteListener(new OnCompleteListener<String>() {
    @Override
    public void onComplete(@NonNull Task<String> task) {
        if (task.isSuccessful()) {
            String token = task.getResult();
            Log.d("TAG", "token: " + token);
            //Do what you need to do with your token
        }
    }
});

您将收到以下错误:

将变量“refreshedToken”类型更改为“Task”

因为您试图将Task类型的对象保存到String类型的对象中,这在Java中实际上是不可能的,这是因为这两个类之间没有继承关系

为了获得令牌,您需要附加一个侦听器。因此,请尝试以下代码行:

Task<String> tokenTask = FirebaseMessaging.getInstance().getToken();
tokenTask.addOnCompleteListener(new OnCompleteListener<String>() {
    @Override
    public void onComplete(@NonNull Task<String> task) {
        if (task.isSuccessful()) {
            String token = task.getResult();
            Log.d("TAG", "token: " + token);
            //Do what you need to do with your token
        }
    }
});

感谢您提供此解决方案。感谢您提供此解决方案。非常准确,谢谢非常准确,谢谢