Не в состоянии прочитать все значения контакта

Я подал заявку на чтение всех контактов и их значений из адресной книги Android, но я не могу прочитать все контакты. В настоящее время я получаю только его имя и номер мобильного телефона.

Как я могу получить все номера телефонов, все значения eamil и значения адресов?

Заранее спасибо...

13.10.2009 08:09:22
Я пытаюсь прочитать детали контактов из моего приложения. У меня есть объект curser. Как я могу узнать все детали контакта? Я хочу синхронизировать мои контакты.
Rishabh 13.10.2009 08:52:48
Uri contacts = Uri.parse ("content: // contacts / people"); Курсор cur = managedQuery (контакты, проекция, ноль, ноль, ноль); if (cur.moveToFirst ()) {String name; String phoneNumber; int nameColumn = cur.getColumnIndex (People.NAME); int phoneColumn = cur.getColumnIndex (People.NUMBER); do {name = cur.getString (nameColumn); phoneNumber = cur.getString (phoneColumn); } while (cur.moveToNext ()); }
Rishabh 13.10.2009 09:09:15
Что именно не работает? Кроме того, вы не извлекаете столбец электронной почты, который объясняет, почему вы не получаете такой результат.
I82Much 13.10.2009 11:18:21
Как я могу узнать столбцы eamil и address. Я не получил ничего, что возвращает столбцы eamil и address, например phoneColumn = cur.getColumnIndex (People.NUMBER); для телефонной колонки.
Rishabh 13.10.2009 11:45:50
1 ОТВЕТ
РЕШЕНИЕ

Прежде всего, не помещайте код в комментарии. Отредактируйте свой оригинальный пост, это делает его намного легче читать.

Во-вторых, это немного сложная проблема с Android. Контактная информация не все в одном месте, поэтому, если вы хотите все это, вам придется выполнить несколько запросов. Вот пример вырезания и вставки всех телефонных номеров из этой ветки :

void trythiscode(){
   // An array specifying which columns to return.
   String[] projection = new String[] {
   People._ID,
   People.NAME,
   People.NUMBER,
};

   // Get the base URI for People table in Contacts content provider.
   // which is: content://contacts/people/
   Uri contactUri = People.CONTENT_URI;

   // Best way to retrieve a query; returns a managed query.
   Cursor peopleCursor = managedQuery (contactUri,
     projection, //Which columns to return.
     null, // WHERE clause--we won't specify.
     null, // Selection Args??
     People.DEFAULT_SORT_ORDER); // Order-by name

   // go to the beginning of the list
   peopleCursor.moveToFirst();


   // So, here we have a contact. We need to get the contact ID (_id) then
   // build the Uri to get the phones section of that user's record
   // which is a subdirectory of a contact record

   long personId = peopleCursor.getLong(peopleCursor.getColumnIndex("_id"));

   Uri personUri = ContentUris.withAppendedId(contactUri, personId );

   // So now the URL looks like: content://contacts/people/_id(where the actual id of the record is here)
   Uri phoneUri=
    Uri.withAppendedPath(personUri, Contacts.People.Phones.CONTENT_DIRECTORY);

   // Now the URL looks like: content://contacts/people/_id/phones (where phones is literally "phones")

   // Now get all the phone numbers for this contact
   Cursor phonesCursor = managedQuery(phoneUri,
     null,
     null,
     null,
     Phones.DEFAULT_SORT_ORDER);

   // We now have a cursor for all the phone numbers for that User ID
   // go to the beginning of the phone list.
   phonesCursor.moveToFirst();


}

И вполне возможно, что это устарело (я не пробовал). Вам придется потратить некоторое время на чтение документации на случай, если они обновят информацию в Donut.

2
13.10.2009 15:57:23