java - 实时数据 Firebase 数据库的问题
问题描述
我正在尝试从具有以下结构的数据库中检索所有 uid。 此图像显示“用户”每个用户的“uid”子级列表,uid 具有用户名和值作为用户名的子级 我无法访问数据库。
package com.example.androidChat;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
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;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ListView userListView;
ArrayList<String> UsernameArrayList, UidArrayList;
private FirebaseAuth mAuth;
FirebaseDatabase database;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
userListView = findViewById(R.id.userListView);
UsernameArrayList = new ArrayList<>();
UidArrayList = new ArrayList<>();
database = FirebaseDatabase.getInstance();
DatabaseReference getUser = database.getReference().child("User");
getUser.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot: snapshot.getChildren()){
Log.i("Users", dataSnapshot.getValue().toString());
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.i("Users", "Error over here!!");
Log.w("Error: ", error.getMessage());
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.main_menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.logout:
newGame();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void newGame() {
mAuth = FirebaseAuth.getInstance();
mAuth.signOut();
Intent intent = new Intent(this, StartActivity.class);
startActivity(intent);
}
}
我尝试添加一些依赖项并尝试了所有方法,但出现了以下错误。
implementation 'com.google.android.gms:play-services-basement:17.4.0'
上面的行是另一个问题中给出的建议,但没有奏效。
2020-12-13 15:46:38.426 8679-9347/com.example.androidChat W/ConnectionTracker: Exception thrown while unbinding
java.lang.IllegalArgumentException: Service not registered: lt@e163c21
at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:1466)
at android.app.ContextImpl.unbindService(ContextImpl.java:1622)
at android.content.ContextWrapper.unbindService(ContextWrapper.java:697)
at ci.f(:com.google.android.gms.dynamite_measurementdynamite@204713052@20.47.13 (040700-0):1)
at ci.d(:com.google.android.gms.dynamite_measurementdynamite@204713052@20.47.13 (040700-0):2)
at lu.E(:com.google.android.gms.dynamite_measurementdynamite@204713052@20.47.13 (040700-0):9)
at le.a(:com.google.android.gms.dynamite_measurementdynamite@204713052@20.47.13 (040700-0):3)
at eg.run(:com.google.android.gms.dynamite_measurementdynamite@204713052@20.47.13 (040700-0):3)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at iz.run(:com.google.android.gms.dynamite_measurementdynamite@204713052@20.47.13 (040700-0):5)
我什至尝试更改模拟器并在我自己的设备上运行它。
解决方案
检查您是否添加了最新的 Firebase 实时数据库依赖项 - https://firebase.google.com/docs/android/setup
com.google.firebase:firebase-database:19.5.1
检查您的依赖项是否已同步。
检查您realtime database
是否permissions
必须访问数据并read/write
访问它而不是authenticated
.
检查您的 firebase 应用程序是否正确集成到您的 android 应用程序,方法是检查firebase console
尝试使缓存无效并启动 Android Studio。
推荐阅读
- mongodb - docker-compose 上带有用户密码的 graylog mongdb 配置
- apache-kafka - 融合云kafka集群如何扩容?
- java - 如何忽略一些 Java 的 Files.lines 行尾分隔符
- flutter - 为什么“设置类型的值
' 无法从方法 'toHive' 返回,因为它的返回类型为 'ShProblemHive'。” - ios - Xamarin Forms:防止键盘调整视图大小
- javascript - Ruby 和其他语言(Python、JavaScript)不同的 hmac sha256 结果
- javascript - 每当解决承诺时如何附加到状态?
- ios - iOS15 UICollectionView自定义布局,插入item后viewForSupplementaryElementOfKind总是重新创建一个新的header
- tcp - 监控windows上的TCP并发连接
- debugging - Keil Ide 在尝试调试或编程时崩溃