簡體   English   中英

如何從聯系人列表中獲取電子郵件地址?

[英]how to get email address from contact list?

如何從聯系人列表中獲取電子郵件地址。下面的代碼我得到了電話號碼和姓名並顯示在list.but我想要電話號碼,姓名和電子郵件地址,所以請檢查以下代碼

 ContentResolver contactResolver = context.getContentResolver();

    Cursor c = contactResolver.query(ContactsContract.Contacts.CONTENT_URI, new String[] { ContactsContract.Contacts._ID,
            ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER }, null, null, null);
    Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
            null, null, null);
    if(cursor.getCount()>0)
        while ( cursor.moveToNext()) {

            String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            // String photoUri = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.PHOTO_THUMBNAIL_URI));
            String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            //  String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));

            Log.e("TAG",  " Name: " + displayName+"==>phone Number==>"+number);

            contactNameArrayList.add(displayName);
            contactNumberArrayList.add(number);

            if (Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
            {


                Cursor pCur = contactResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { contactId }, null);


                while (pCur.moveToNext())
                {
                    String phone = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    String type = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
                    String s = (String) ContactsContract.CommonDataKinds.Phone.getTypeLabel(context.getResources(), Integer.parseInt(type), "");

                   // Log.e("TAG", s + " phone: " + phone);

                }
                pCur.close();
            }

            Cursor emailCursor = contactResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                    null,
                    null, null, null);

            while (emailCursor.moveToNext())
            {
                String email = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                int type = emailCursor.getInt(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
                String s = (String) ContactsContract.CommonDataKinds.Email.getTypeLabel(context.getResources(), type, "");

                Log.e("TAG", s + " email: " + email);
            }

            emailCursor.close();

        }  cursor.close();


    Log.e(TAG,"contactNameArrayList sIZE==>"+contactNameArrayList.size()+"contactNumberArrayList size==>"+contactNumberArrayList.size()+"contactEmailAddressArrayList size==>"+contactEmailAddressArrayList.size());

}

我為名稱和數字以及電子郵件ID創建了三個數組,但是在上面的代碼中,我只有手機和name。當我在數組中添加名稱和手機No時,所以同時在電子郵件ID array中同時存儲電子郵件ID特別是手機No.so請幫助...

您可以使用此方法從聯系人處獲取電子郵件

public List<String> getEmail(int contactId) {
    List<String> emailStr = new ArrayList<String>();
    ContentResolver cr = context.getContentResolver();
    Cursor emailCur = cr.query(
            ContactsContract.CommonDataKinds.Email.CONTENT_URI,
            null,
            ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
            new String[]{String.valueOf(contactId)}, null);
    while (emailCur.moveToNext()) {
        String email = emailCur.getString(
                emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));


        emailStr.add(email);
        System.out.println("Email " + email );
    }
    emailCur.close();
    return emailStr;

}

使用“以下代碼”可從一個聯系人以及電話簿中的所有聯系人獲取多個號碼和電子郵件。

private void getContactsFromPhoneBook() {

    String unique_id = ApplicationConstant.phone_id;
    System.out.println("Unique_ID  : " + unique_id);

    Contact_To_Sync contact_to_sync = new Contact_To_Sync();

    List<Contacts> AllContact_toSync = new ArrayList<>();

    ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
            null, null, null, null);

    System.out.println("Contacts Count : " + cur.getCount());

    if (cur.getCount() > 0) {

        Contacts contacts = null;

        List<String> Phones;
        List<String> Emails;

        while (cur.moveToNext()) {

            contacts = new Contacts();
            Phones = new ArrayList<>();
            Emails = new ArrayList<>();

            String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            String timeStamp = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP));




                contacts.setContact_id(id);
                contacts.setName(name);

                System.out.println("name : " + name + ", ID : " + id + " Status : " + timeStamp);

                // get the phone number
                Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
                        new String[]{id}, null);

                while (pCur.moveToNext()) {
                    String phone = pCur.getString(
                            pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    System.out.println("phone" + phone);

                    Phones.add(phone);

                }
                pCur.close();


                // get email and type

                Cursor emailCur = cr.query(
                        ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                        null,
                        ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
                        new String[]{id}, null);
                while (emailCur.moveToNext()) {
                    // This would allow you get several email addresses
                    // if the email addresses were stored in an array
                    String email = emailCur.getString(
                            emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                    String emailType = emailCur.getString(
                            emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));

                    Emails.add(email);

                    System.out.println("Email " + email + " Email Type : " + emailType);
                }
                emailCur.close();


                contacts.setEmails(Emails);
                contacts.setPhones(Phones);

                AllContact_toSync.add(contacts);


        }

        contact_to_sync.setContacts(AllContact_toSync);
        contact_to_sync.setPhone_device_name(unique_id);

        if (!contact_to_sync.getContacts().isEmpty()) {
            Sync_Contacts_To_Server(contact_to_sync);
        }

    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM