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()
слушателя.
Удачного кодирования :)