只获取android中的电子邮件地址的联系人

时间:2015-09-28 11:19:12

标签: android email

我按照这个link获得了一个工作代码,以获取存在电子邮件的联系人的姓名和电子邮件(仅限那些带有电子邮件地址的人)。但是,我想在那里添加电话号码,如果存在的话。目前我还在学习,不能完全理解游标的整体概念,为什么我的代码无法获取电话号码

        private void displayContacts() {
        ArrayList<String> namesmails = getNameEmailDetails();
        listDataHeader = new ArrayList<String>();
        listDataChild = new HashMap<String, List<String>>();
        int counter = 0;
        for (int i = 0; i<namesmails.size();i = i+2) {
            //namesmails[0] == name && namesmails[1] == phone && namesmails[2] == email
            String name = namesmails.get(i);
            String mail = namesmails.get(i+1);
            listDataHeader.add(name);
            List<String> currentName = new ArrayList<String>();
            currentName.add(mail);
            listDataChild.put(listDataHeader.get(counter), currentName);
            counter += 1;
        }
    }
    /*
        This method gathers the information about contacts
     */

    public ArrayList<String> getNameEmailDetails(){
        ArrayList<String> names = new ArrayList<String>();
        ContentResolver cr = getContentResolver();
        Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        if (cur.getCount() > 0) {
            while (cur.moveToNext()) {
                String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                Cursor cur1 = cr.query(
                        ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                        ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
                        new String[]{id}, null);
                while (cur1.moveToNext()) {
                    //to get the contact names
                    String name=cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    Log.e("Name :", name);
                    String phone=cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    Log.e("Nr: ",phone); //Here is e-mail instead of phone nr?!?!
                    String email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                    Log.e("Email", email);
                    if(email!=null){
                        names.add(name);
                        names.add(email);
                    }
                }
                cur1.close();
            }
        }
        return names;

    }

正如我在评论中指出的那样,联系电话号码不会显示,但是电子邮件是。我应该更改什么,以便显示联系电话。

0 个答案:

没有答案
相关问题