Запросите контакт Android, чтобы получить ACCOUNT_TYPE и ACCOUNT_NAME - PullRequest
4 голосов
/ 16 августа 2011

Я могу получить список контактов и их основную информацию, такую ​​как: имя. телефоны, электронная почта, ims, заметки, организации для целей резервного копирования, используя ContactsContract.Contacts.CONTENT_URI для списка контактов и других определенных URI для другого типа информации.

Мне нужно, чтобы полностью восстановить всю информацию еще два поля:

ContactsContract.RawContacts.ACCOUNT_TYPE

ContactsContract.RawContacts.ACCOUNT_NAME

Может кто-нибудь подсказать, как получить эту информацию, зная идентификатор контакта из ContactsContract.Contacts.CONTENT_URI?

Спасибо

1 Ответ

10 голосов
/ 16 августа 2011
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);
    }
...