Android工作室问题;将变量 'refreshedToken' 类型更改为 'Task<String>
Android Studio issue; change variable 'refreshedToken' type to 'Task<String>
由于 Android Studio 中已弃用 FirebaseInstanceId,我该如何更正此代码块?
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
我试着改成这样:
String refreshedToken = FirebaseMessaging.getInstance().getToken();
但是当我这样做时,我收到一条错误消息
Change variable 'refreshedToken' type to 'Task<String>'
我的完整代码是:
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();
有 return 类型的 Task<String>
并且你正在使用字符串。
所以您可以做的是添加侦听器并等待任务完成并从中获取令牌。
如下:
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();
}
}
});
您收到以下错误:
Change variable 'refreshedToken' type to 'Task'
因为你想把一个Task<String>
类型的对象保存到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
}
}
});
由于 Android Studio 中已弃用 FirebaseInstanceId,我该如何更正此代码块?
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
我试着改成这样:
String refreshedToken = FirebaseMessaging.getInstance().getToken();
但是当我这样做时,我收到一条错误消息
Change variable 'refreshedToken' type to 'Task<String>'
我的完整代码是:
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();
有 return 类型的 Task<String>
并且你正在使用字符串。
所以您可以做的是添加侦听器并等待任务完成并从中获取令牌。
如下:
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();
}
}
});
您收到以下错误:
Change variable 'refreshedToken' type to 'Task'
因为你想把一个Task<String>
类型的对象保存到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
}
}
});