Android Firebase一对一聊天

Android Firebase一对一聊天,android,firebase,firebase-realtime-database,rest-firebase,Android,Firebase,Firebase Realtime Database,Rest Firebase,我正在用Firebase作为后端,用android构建一个简单的聊天应用程序 ref3.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) { Map<String, Object> users = (Map<String, Object&

我正在用Firebase作为后端,用android构建一个简单的聊天应用程序

ref3.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {
                Map<String, Object> users = (Map<String, Object>) snapshot.getValue();
                System.out.println(users.values().toString());
                Set s = users.entrySet();
                Iterator itr = s.iterator();
                while (itr.hasNext()) {
                    Map.Entry m = (Map.Entry) itr.next();
                    m.getKey();
                    String myval = m.getValue().toString();
                    String spmyval[] = myval.split(", ");

                    System.out.println(spmyval[0] + " <-sp0 sp1-> " + spmyval[1]);
                    list=new ArrayList();

                    a1 = spmyval[0].split("=");

                    Cursor cur = getContentResolver().query(
                            ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
                    if (cur.getCount() > 0) {
                        while (cur.moveToNext()) {

                            // read id
                            String id = cur.getString(cur
                                    .getColumnIndex(ContactsContract.Contacts._ID));
                            /** read names **/
                            displayName = cur
                                    .getString(cur
                                            .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

                            System.out.println("DISPLAYNAMESssss:!!!!!!!!!!!!!!"+displayName+"::::::::");


                            /** Phone Numbers **/
                            Cursor pCur = getContentResolver().query(
                                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                    null,
                                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                            + " = ?", new String[]{id}, null);


                            String typeStr = null;
                            int i=0;
                            while (pCur.moveToNext()) {

                                num = pCur
                                        .getString(pCur
                                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                                number1=new String[]{num};

                                Log.e("Number by pavan",i +" " + number1[i]);
                                typeStr = pCur
                                        .getString(pCur
                                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));

                                if(a1[1].equals(number1[i].replaceAll("[^\\d.]", ""))) {
                                    Log.e("COMMON:", a1[1]);




                                    i++;
                                }
                            }

                            pCur.close();




                        }
                    }
ref3.addValueEventListener(新的ValueEventListener(){
@凌驾
公共无效onDataChange(数据快照快照){
映射用户=(映射)snapshot.getValue();
System.out.println(users.values().toString());
Set s=users.entrySet();
迭代器itr=s.Iterator();
while(itr.hasNext()){
Map.Entry m=(Map.Entry)itr.next();
m、 getKey();
字符串myval=m.getValue().toString();
字符串spmyval[]=myval.split(“,”);
System.out.println(spmyval[0]+“”+spmyval[1]);
列表=新的ArrayList();
a1=spmyval[0]。拆分(“”);
游标cur=getContentResolver().query(
Contacts contract.Contacts.CONTENT_URI,null,null,null,null);
如果(cur.getCount()>0){
while(cur.moveToNext()){
//读取id
字符串id=cur.getString(cur
.getColumnIndex(Contacts contract.Contacts._ID));
/**读名字**/
displayName=cur
.getString(cur)
.getColumnIndex(Contacts contract.Contacts.DISPLAY_NAME));
System.out.println(“DISPLAYNAMESssss:!!!!!!!!!!!!!”+displayName+“::::::”;
/**电话号码**/
游标pCur=getContentResolver().query(
ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,
无效的
Contacts contract.CommonDataTypes.Phone.CONTACT\u ID
+“=?”,新字符串[]{id},null);
字符串typeStr=null;
int i=0;
while(pCur.moveToNext()){
num=pCur
.getString(pCur)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
number1=新字符串[]{num};
Log.e(“pavan的编号”,i+“”+number1[i]);
类型str=pCur
.getString(pCur)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.TYPE));
如果(a1[1]。等于(number1[i].replaceAll(“[^\\d.]”,“”))){
Log.e(“普通:”,a1[1]);
i++;
}
}
pCur.close();
}
}
我已经设置了注册页面,以便用户的联系方式存储在UID(由firebase生成)下。
我已使用上述代码检索了常用联系人。我要求用户向该常用号码发送推送消息。但是,我无法找到追溯该号码所属UID的方法。我正在检索常用号码,以便获得正在使用我的应用程序的朋友的列表。因此,我不知道是否应该硬编码该号码编写API。如果有人有解决方案,请给我举个例子。Hi Praveen。听起来你的应用程序需要访问用户手机的通讯簿,这是Firebase安全规则无法做到的(因为它们在Firebase服务器上运行)。不幸的是,你的问题太宽泛了,无法以当前的形式回答。如果你能分享一个你尝试过的、你期望代码做什么以及它正在做什么的最小示例,你会更容易帮助你:我很抱歉我的宽泛问题,现在我已经重新构造了我的问题……请帮助我me@PraveenMohan你实现了一个到另一个吗使用Firebase的一对一聊天?因为我在Firebase api中找不到与一对一聊天相关的内容。@PraveenMohan,能否显示用于一对一聊天应用程序的数据结构?@Anonymous59能否使用Firebase共享一对一聊天结构