2010-05-25 4 views
3

ПРИМЕЧАНИЕ: Должен работать на Android 1.5 - КонтактыКонтракт неПолучение списка всех телефонных контактов?

Простой вопрос. Мне нужно знать лучший способ получить тот же список контактов, который появляется, когда пользователь нажимает кнопку «Контакты».

Вы думаете, что что-то подобное будет работать:

//For Contacts 
Intent pickIntent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI); 
this.startActivityForResult(pickIntent, RESULT); 

//For Phones 
Intent pickIntent = new Intent(Intent.ACTION_PICK, Phones.CONTENT_URI); 
this.startActivityForResult(pickIntent, RESULT); 

Проблема заключается в том, что не включает в себя вторичные учетные записи Google или Exchange, контакты. Посредством дополнительных учетных записей в Android вы можете добавить дополнительные учетные записи gmail, чтобы синхронизировать почту и контакты. Вышеуказанное намерение не будет перечислять эти дополнительные контакты.

Мне также говорят, что на HTC Desire вы можете добавлять контакты на телефон, которые не синхронизируются с Google. Эти контакты также не отображаются.

Итак, как мне получить реальный список контактов, чтобы я мог создать свой собственный список действий, который работает правильно там, где намерения Google нет.

Примечание: Должен работать на Android 1.5 - ContactsContract не

ответ

3

См. here для подробного описания доступа к контактам на Android. Это также помогает вам создать приложение, которое использует ContactsContract, если возможно , но по-прежнему работает на старых версиях для Android.

+0

Фантастический! Я уже сам делал тест на отражение, используя ContactsContract, чтобы увидеть, будет ли это работать. Я воплощу, испытаю на Желание и вернусь с тобой. – pcm2a

+0

Я закодировал их пример, но я не вижу, как это нам помогает. Для их компиляции вам необходимо настроить таргетинг на API 2.0.1 или выше. Поэтому я предполагаю, что ваше приложение не может быть установлено на телефоне, где работает что-то меньшее, чем эта версия, и что пользователи предыдущих выпусков не будут видеть ваше приложение на рынке. Нам нужно решение, которое работает и может быть развернуто на всех версиях. Ни один из примеров, которые я видел, не делает этого, если я не очень толстый и что-то не хватает, что вполне вероятно. Я пришел к выводу, что я должен опубликовать две версии своего приложения. Нехорошо. –

+0

Вы можете скомпилировать для более поздней версии, но по-прежнему поддерживать более ранние SDK. Если вы используете отражение, вы можете динамически загружать классы, которые импортируют последующие API-интерфейсы - классы не привязаны до загрузки. Подробнее о версировании см. Здесь: http://developer.android.com/guide/publishing/versioning.html#minsdkversion – sehugg

3

Вы должны использовать поставщик ContactsContract считывать данные из базы данных.

См. Это link для получения более подробной информации о том, как использовать ContactsContract.

HTH!

+0

Более 30% пользователей Android по-прежнему находятся на Android 1.5 и не могут использовать класс ContactsContract. Есть ли хорошие примеры чтения контактов, которые работают во всех версиях? Я должен продолжать поддерживать этих пользователей. – pcm2a

0

сделать смотрите ниже вопрос, How to read contacts on Android 2.0

Люди класс обесценился с Android 2.0 вы должны использовать класс ContactsContract вместо этого.

+0

Более 30% пользователей Android по-прежнему находятся на Android 1.5 и не могут использовать класс ContactsContract. Есть ли хорошие примеры чтения контактов, которые работают во всех версиях? Я должен продолжать поддерживать этих пользователей. – pcm2a

+0

Я не думаю, что есть такой класс, вы должны поддерживать их индивидуально. – Vamsi

-1
Cursor cursor=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
    while (cursor.moveToNext()) { 
     String name=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

    } 
+2

, пожалуйста, предоставьте небольшое объяснение и для всех, чтобы понять. –

Смежные вопросы