Android 比较Firebase数据库与电话联系人列表
我正在开发一个android聊天应用程序。我试图将电话联系人列表与“用户”子项中的“电话”进行比较。我试图通过查询得到“phone”的键值,并将其与电话联系人列表进行比较,然后将其放入一个模型中,该模型可以从数据库中获取信息以用于聊天列表 这是我的密码Android 比较Firebase数据库与电话联系人列表,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在开发一个android聊天应用程序。我试图将电话联系人列表与“用户”子项中的“电话”进行比较。我试图通过查询得到“phone”的键值,并将其与电话联系人列表进行比较,然后将其放入一个模型中,该模型可以从数据库中获取信息以用于聊天列表 这是我的密码 final DatabaseReference mUserDB = FirebaseDatabase.getInstance().getReference().child("Users"); Query query = m
final DatabaseReference mUserDB = FirebaseDatabase.getInstance().getReference().child("Users");
Query query = mUserDB.orderByChild("phone").equalTo(mContact.getPhone());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
String phone = "",
name = "";
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
dataSnapshot.getKey();
if (childSnapshot.child("phone").getValue() != null) {
phone = childSnapshot.child("phone").getValue().toString();
}
if (childSnapshot.child("username").getValue() != null) {
name = childSnapshot.child("username").getValue().toString();
}
UserObject mUser = new UserObject(childSnapshot.getKey(), name, phone);
userList.add(mUser);
for (UserObject mContactIterator : contactList) {
if (mContactIterator.getPhone().equals(mUser.getPhone())) {
mUsers.clear();
//I think User user can not get the value
User user = childSnapshot.getValue(User.class);
mUsers.add(user);
final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (!user.getId().equals(firebaseUser.getUid())) {
mUsers.add(user);
}
}
userAdapter = new UserAdapter(getContext(), mUsers, false);
recyclerView.setAdapter(userAdapter);
}
}
}
}
我认为在这里不能正常工作
if (!user.getId().equals(firebaseUser.getUid())) {
mUsers.add(user);
}
聊天列表需要显示联系人列表中的用户,但聊天列表为空
&我以前看到过这个相关的StackOverflow问题,但它对我不起作用我已经解决了,我的代码正在工作,谢谢
final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
final DatabaseReference mUserDB = FirebaseDatabase.getInstance().getReference().child("Users");
Query query = mUserDB.orderByChild("phone").equalTo(mContact.getPhone());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
String phone = "";
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
dataSnapshot.getKey();
if (childSnapshot.child("phone").getValue() != null) {
phone = childSnapshot.child("phone").getValue().toString();
}
UserObject mUser = new UserObject(childSnapshot.getKey(), "", phone);
userList.add(mUser);
mUsers.clear();
//I think User user can not get the value
User user = childSnapshot.getValue(User.class);
mUsers.add(user);
if (!user.getId().equals(firebaseUser.getUid())) {
mUsers.add(user);
}
请编辑您的问题,使其更具体,Firebase查询或电话联系人查询中有什么不起作用?您是否已请求设备联系人的权限?是,已授予权限,我正在我的用户片段中使用此代码。我必须获取所有联系人列表,并在联系人号码中添加国家代码,以与插入用于电话身份验证的firebase“phone”子号码进行比较