Трудно найти эту проблему, потому что это иногда случается, и очень повезло, что я уловил эту ошибку с открытым logcat.
Итак, проблема: когда я открываю свою активность и запрашиваю данные, я не вижу загруженные данные и получаю предупреждение logcat
[Firestore]: прослушивание запроса (упражнения, где myField == SomeValue порядок по name ) не выполнен: ay {code = PERMISSION_DENIED, description = Отсутствует или недостаточно разрешений., причина = null}
Первая идея может быть - неправильный индекс, неправильныйправила и т. д. Но это происходит, как я сказал «иногда», в большинстве случаев это работает.
Я заметил, что это происходит, когда приложение читает данные в первый раз или когда состояние подключения к Интернету снова меняется на онлайн.
Так похоже на ошибку, не так ли?Вероятно, вы столкнулись с этой проблемой.Вы можете мне помочь.
Вот простой блок кода с проблемой:
CollectionReference collection = db.collection("myCollection");
collection.whereEqualTo("myField","someValue")
.addSnapshotListener(this, new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot snapshot,
@Nullable FirebaseFirestoreException e) {
//magic
}
}
Правила:
match /someitems/{someitem}{
allow read: if request.auth.uid != null &&
(resource.data.enable == true || isAdmin());
allow write: if isAdmin()
}
Индексы (обновлено, см. Комментарий ниже):
someitems:
title: asc
kit: asc
language: asc
enable: asc
PS: я использую последние зависимости от firebase
Спасибо!