com.google.firebase.firestore.FirebaseFirestoreException:无法获取文档,因为客户端处于脱机状态,安卓系统

yvfmudvl  于 2023-06-24  发布在  Go
关注(0)|答案(8)|浏览(96)

我得到了这个运行时错误,我不明白它背后的原因。
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());
            }
        }
    });

我能做点什么吗?

zpqajqem

zpqajqem1#

发生这种情况是因为OnCompleteListener在任务完成时被触发,要么失败要么成功。为了避免错误,您可以使用单独的OnSuccessListenerOnFailureListener
OnSuccessListener是在任务成功时调用的,但如果出现上述错误,OnFailureListener会被触发,您可以在监听器的onFailure()方法中处理。
Happy Coding:)

ki1q1bka

ki1q1bka2#

如果没有任何帮助,并且你确定一切都好去,请执行以下步骤:

  1. Clean project(Build -> Clean Project)。您也可以使用“清洁项目”来“无效和缓存”以获得更多的安全性。
    1.从项目中删除google-services.json并同步。
    1.生成项目。Android studio将抛出构建异常,因为缺少google-services.json,没关系。
    1.从Firebase控制台重新下载google-services.json,放入project并同步。
    1.构建并运行。
    希望有人帮我
iszxjhcz

iszxjhcz3#

当我使用错误的文档路径时,我也遇到了同样的异常。当我修好了路,它开始工作了。
无论如何,错误信息是误导性的。

ddarikpa

ddarikpa4#

在我的例子中,解决方案是在AndroidStudio中创建一个新的模拟器,并在那里运行应用程序

acruukt9

acruukt95#

如果你使用的是rxjava,那么用这种方式捕捉throwable会很简单:

RxFirestore.getDocument(FirebaseFirestore.getInstance()
    .collection("info")
    .document("app"))
    .subscribeOn(Schedulers.io())
    .subscribe(snapshot -> {

    }, throwable -> Timber.e(throwable))

否则尝试在promise或/和try-catch块中以某种方式捕获它

pes8fvy9

pes8fvy96#

对我来说,我面临这个问题,因为我忘记从Firebase控制台初始化我的FireStore数据库。希望这对其他人有帮助。

vxf3dgd4

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

5t7ly7z5

5t7ly7z58#

在执行任何删除或其他建议的操作之前,请尝试以下两个操作:

  • 重新启动正在测试的移动终端。
  • 连接到其他Internet连接并尝试。

对我来说,我的设备连接到一个公共WiFi,但互联网不工作,即使它是工作正常,只是几分钟前。我的情况是,我删除并安装应用程序再次在我的Android设备上,之后,我开始得到同样的错误.以上两点对我来说都是有用的。

相关问题