查询Android联系人以获取ACCOUNT_TYPE和ACCOUNT_NAME

Ali*_*lin 4 android contactscontract rawcontacts android-contacts

我能够获得联系人列表及其基本信息,如:姓名.用于备份目的的电话,电子邮件,即时消息,备注,组织,ContactsContract.Contacts.CONTENT_URI用于联系人列表以及针对不同信息类型的其他特定URI.

我需要,为了完全恢复所有信息两个字段:

ContactsContract.RawContacts.ACCOUNT_TYPE

ContactsContract.RawContacts.ACCOUNT_NAME

任何人都可以指导我如何获取此信息,知道来自ContactsContract.Contacts.CONTENT_URI的联系人ID?

谢谢

Ali*_*lin 12

public ContactAccount getContactAccount(Long id,ContentResolver contentResolver) {

        ContactAccount account = null;

        Cursor cursor = null;
        try {

             cursor = contentResolver.query(ContactsContract.RawContacts.CONTENT_URI,
                     new String[]{ContactsContract.RawContacts.ACCOUNT_NAME, ContactsContract.RawContacts.ACCOUNT_TYPE},
                     ContactsContract.RawContacts.CONTACT_ID +"=?",
                     new String[]{String.valueOf(id)},
                     null);

            if (cursor != null && cursor.getCount() >0)
            {
                cursor.moveToFirst();
                account = new ContactAccount();
                account.setAccountName(cursor.getString(cursor.getColumnIndex(ContactsContract.RawContacts.ACCOUNT_NAME)));
                account.setAccountType(cursor.getString(cursor.getColumnIndex(ContactsContract.RawContacts.ACCOUNT_TYPE)));
                cursor.close();
            }
        } catch (Exception e) {
            Utils.log(this.getClass().getName(), e.getMessage()); 
        } finally{
          cursor.close();
        }

        return(account);
    }
Run Code Online (Sandbox Code Playgroud)