我得到了这个运行时错误,我不明白它背后的原因。com.google.firebase.firestore.FirebaseFirestoreException: Failed to get document because the client is offline.
下面是我的Activity中尝试从云Firestore获取数据的代码
DocumentReference docRef = db.collection("room-id-1").document("participan-name-1");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document != null) {
Log.d(TAG, "DocumentSnapshot data: " + task.getResult().getData());
userData.registerUserToHotspot(roomId_str, participantName_str);
} else {
Log.d(TAG, "No such document");
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
}
});
我能做点什么吗?
8条答案
按热度按时间zpqajqem1#
发生这种情况是因为
OnCompleteListener
在任务完成时被触发,要么失败要么成功。为了避免错误,您可以使用单独的OnSuccessListener
和OnFailureListener
。OnSuccessListener
是在任务成功时调用的,但如果出现上述错误,OnFailureListener
会被触发,您可以在监听器的onFailure()
方法中处理。Happy Coding:)
ki1q1bka2#
如果没有任何帮助,并且你确定一切都好去,请执行以下步骤:
1.从项目中删除google-services.json并同步。
1.生成项目。Android studio将抛出构建异常,因为缺少google-services.json,没关系。
1.从Firebase控制台重新下载google-services.json,放入project并同步。
1.构建并运行。
希望有人帮我
iszxjhcz3#
当我使用错误的文档路径时,我也遇到了同样的异常。当我修好了路,它开始工作了。
无论如何,错误信息是误导性的。
ddarikpa4#
在我的例子中,解决方案是在AndroidStudio中创建一个新的模拟器,并在那里运行应用程序
acruukt95#
如果你使用的是rxjava,那么用这种方式捕捉throwable会很简单:
否则尝试在promise或/和try-catch块中以某种方式捕获它
pes8fvy96#
对我来说,我面临这个问题,因为我忘记从Firebase控制台初始化我的FireStore数据库。希望这对其他人有帮助。
vxf3dgd47#
我在API 19以下的模拟器上遇到了这个问题,并询问了Firebase支持团队。他们回应我说这是一个安全连接问题,他们建议我在那个模拟器上启用TLS。据我所知,Firebase需要最新的安全提供商进行连接。如果您认为您的Firebase配置都是正确的,并且在API 19以下的模拟器上仍然面临此问题,请确保模拟器具有最新的安全提供程序。
请在此链接中查看“Android上的TLS”部分:https://github.com/grpc/grpc-java/blob/master/SECURITY.md#tls-on-android
谷歌表示,它通过Google Play服务提供最新的提供商。如果你想用它,有一个文件。
https://developer.android.com/training/articles/security-gms-provider.html
5t7ly7z58#
在执行任何删除或其他建议的操作之前,请尝试以下两个操作:
对我来说,我的设备连接到一个公共WiFi,但互联网不工作,即使它是工作正常,只是几分钟前。我的情况是,我删除并安装应用程序再次在我的Android设备上,之后,我开始得到同样的错误.以上两点对我来说都是有用的。