Я пытаюсь прочитать значения из базы данных Firebase в реальном времени, но ничего не происходит. Я не могу выяснить, что не так с моим кодом. Я установил правила соответственно. Ниже приведен код в MainActivity.java
package com.borah.manjit.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class MainActivity extends AppCompatActivity {
String TAG="mn";
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference().child("Games");
tv=findViewById(R.id.tv);
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String s=dataSnapshot.child("game1").getValue(String.class);
tv.setText(s);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w(TAG, "Failed to read value.", error.toException());
}
});
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
Вот данные в моей базе данных
Правила базы данных установлены следующим образом
{
"rules": {
".read": true,
".write": true
}
}
Разве текст textview не должен быть установлен на "Крикет"?
Вот так выглядит мой журнал
09-10 13: 34: 52,854 23293-23293 / com.borah.manjit.myapplication D / mn:
https://myapplication6 -55473.firebaseio.com / Игры 09-10 13: 34: 59.184
23293-23293 / com.borah.manjit.myapplication W / mn: Не удалось прочитать значение.
com.google.firebase.database.DatabaseException: ошибка базы данных Firebase: в доступе отказано
на com.google.firebase.database.DatabaseError.toException (неизвестный источник)
на com.borah.manjit.myapplication.MainActivity $ 1.onCancelled (MainActivity.java:40)
на com.google.android.gms.internal.zzegf.zza (неизвестный источник)
на com.google.android.gms.internal.zzehy.zzbyc (неизвестный источник)
на com.google.android.gms.internal.zzeig.run (неизвестный источник)
на android.os.Handler.handleCallback (Handler.java:739)
на android.os.Handler.dispatchMessage (Handler.java:95)
на android.os.Looper.loop (Looper.java:159)
на android.app.ActivityThread.main (ActivityThread.java:5461)
в java.lang.reflect.Method.invoke (родной метод)
в java.lang.reflect.Method.invoke (Method.java:372)
на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:964)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:759)