2013-11-18 1 views
0

Этот вопрос не ответил, поскольку они не рекомендовали тип Contacts.People, и все ответы, которые я мог найти, по-прежнему связаны с его использованием. Как это можно сделать без использования People.NAME и People.NUMBER?Какой неисчерпаемый способ вызвать список контактов Android?

Другими словами, я уже знаю, что вы можете начать список контактов с:

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
startActivityForResult(intent, 1); 

... и тогда вы должны создать метод, называемый onActivityResult, который должен выглядеть следующим образом:

public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 
    switch (reqCode) { 
    case (1): 
     if (resultCode == Activity.RESULT_OK) { 
      Uri contactData = data.getData(); 
      Cursor c = this.getContentResolver()  
         .query(contactData, 
          null, 
          null, 
          null, 
          null); 

      if (c.moveToFirst()) { 
       int contact_id = c.getInt(c 
         .getColumnIndexOrThrow(ContactsContract.?????????)); 
      } 
     } 
     break; 
    } 
} 

... так что, какие наименее названные имена столбцов я должен ожидать, чтобы найти в Cursor c? Я не могу найти обновленную документацию по этому вопросу, и Google возвращает примеры с устаревшими столбцами People.NAME и People.NUMBER.

ContactsContract класса византийское болото ... вещи, в которых я не могу найти что-нибудь, что выглядит она не имеет ничего общего с People.NAME или People.NUMBER, поэтому ответы, которые говорят «просто читать документацию для ContactsContract» абсолютно бесполезны.

Возможно, есть немного смысла в редактировании этого, после того, как он уже был отмечен как [дубликат], так как никто никогда его не прочитает.

Худший из всех, так как я не могу комментировать, я не могу просить разъяснений по другим версиям этого вопроса. Я должен задать новый вопрос.

+0

Вы видели ссылку [здесь] (http://developer.android.com/reference/android/provider/ContactsContract.Data.html)? Я думаю, это может быть полезно. – Danny

+0

Помимо этого, не стесняйтесь подробно объяснять, что означает «вызвать список контактов Android». – CommonsWare

+0

«invoke Android Contact Contact» означает, что телефон представляет пользователю список контактов, а затем, когда пользователь выбирает контакт из списка, эти данные возвращаются к методу onActivityResult моей активности. Я не могу понять, как извлечь данные из объекта Intent, переданного этому методу, потому что я понятия не имею, какие столбцы ожидать в Cursor, которые в конечном итоге могут быть извлечены из объекта Intent, переданного onActivityResult. – user3005829

ответ

0

Обратитесь к следующей ссылке для получения дополнительной информации http://developer.android.com/training/contacts-provider/index.html

+0

Это, безусловно, говорит вам как сделать многое с поставщиком контактов, но он не дает мне подсказки относительно того, что может послужить заменой замены, например, кодом, что делать с данными, указанными в 'onActivityResult'. Я отредактирую вопрос, чтобы сделать его более понятным. – user3005829