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



我是第一次出现堆栈溢出,所以如果我不能正确解释这个问题,或者没有以任何方式遵守这个社区的政策,请原谅我。

我的问题是:今天早上我正在学习堆栈溢出,突然一个问题出现在我的脑海中。假设我的电子邮件地址是simran@gmail.com,并且这是当前在我的设备中登录。那么如何获取与我的电子邮件帐户关联的所有电子邮件联系人。我的gmail帐户中添加了200个人,所以我想在listview中显示所有这些。

注意:我知道如何实现列表视图,以及如何将主电子邮件地址和其他电子邮件登录到我的设备中。

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

谢谢Simran

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

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" />

没有这个许可,这似乎是不可能的。

最新更新