Com.google.firebase.firestore.FirebaseFirestoreException: Не удалось получить документ, потому что клиент находится в автономном режиме. Android

Я получаю эту ошибку времени выполнения, что я не понимаю причину этого.

com.google.firebase.firestore.FirebaseFirestoreException: Failed to get document because the client is offline.

Ниже приведен код моей активности, который пытается извлечь данные из облачного 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());
            }
        }
    });

Я могу что-то сделать с этим?

Ответ 1

если вы используете rxjava, тогда он будет легко ловить бросок таким образом:

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

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

В противном случае попробуйте как-нибудь поймать его в обещании или/и блок try-catch

Ответ 2

У меня было то же исключение, когда я использовал неправильный путь к документу. Когда я исправил путь, он начал работать.

Во всяком случае, сообщение об ошибке вводит в заблуждение.

Ответ 3

Это происходит из-за OnCompleteListener что OnCompleteListener запускается, когда задача завершена, либо она не выполнена, либо выполнена успешно. Чтобы избежать ошибки, вы можете использовать отдельные OnSuccessListener и OnFailureListener.

OnSuccessListener вызывается, когда задача выполнена успешно, но если вышеупомянутая ошибка происходит, OnFailureListener будет вызван, и вы можете обработать ошибку в onFailure() слушателя.

Удачного кодирования :)