如何在设备上获取与我的电子邮件帐户关联的电子邮件联系人

时间:2014-10-29 08:08:04

标签: android gmail google-contacts

我是第一次出现堆栈溢出,所以如果我无法正确解释问题或不遵守本社区的政策,请原谅我。

我的问题是:今天早上我从堆栈溢出中学习,突然间我的脑海中浮现出一个问题。假设我的电子邮件地址是 simran .... @ gmail.com ,目前我的设备中已经已登录。那么如何获取与我的电子邮件帐户关联的所有电子邮件联系人。我在我的Gmail帐户中添加了 200 + 个人,因此想要在listview中显示这些内容。

注意:我知道如何实施列表视图以及如何获取我的设备中登录的primary email地址和其他电子邮件。

我需要的是什么:我想获取 simran .... @ gmail.com 的所有电子邮件联系人。这是可能的,如果答案是肯定的,那么如何?我们可以在没有用户许可的情况下得到这个吗?

由于 SIMRAN

1 个答案:

答案 0 :(得分:0)

您可以使用此代码获取联系人列表中的所有电子邮件联系人 -

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 email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                    Log.e("Email", email);
                    if(email!=null){
                        names.add(name);
                    }
                } 
                cur1.close();
            }
        }
        return names;
    }

希望这会对你有所帮助。

您必须添加权限 -

<uses-permission android:name="android.permission.READ_CONTACTS" />

如果没有这个许可,似乎不可能。