Как заполнить AutoCompleteTextView с именами контактов в Android 2.1 - PullRequest
2 голосов
/ 16 июля 2010

У меня есть AutoCompleteTextView, и я хочу, чтобы он автоматически заполнял имена контактов при вводе.Проблема в том, что Contacts.People устарела.В новой документации сказано, что нужно использовать ContactsContract, но я не могу найти подходящего учебника.Может ли кто-нибудь дать мне пример кода или указать соответствующий учебник.

Спасибо.

1 Ответ

1 голос
/ 16 июля 2010

Android Contact API для 2.0

Предоставление доступа

Перед тем, как приложение сможет запросить записи контактов, необходимо предоставить доступ через файл AndroidManifest.xml, хранящийся в корневом каталоге проекта. Добавьте следующие права на использование ниже инструкции для использования-sdk.

 <uses-permission android:name="android.permission.READ_CONTACTS" />

Запрос к базе данных контактов Android

Получение контактных данных

Основная контактная информация хранится в таблице контактов с подробной информацией, хранящейся в отдельных таблицах для нормализации. В Android 2.0 для запроса базовых записей контактов URI для запроса хранится в ContactsContract.Contacts.CONTENT_URI. пакет высший проход.ТестКонтакты;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;

public class TestContacts extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ContentResolver cr = getContentResolver();
        Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
                null, null, null, null);
        if (cur.getCount() > 0) {
            while (cur.moveToNext()) {
                String id = cur.getString(
                        cur.getColumnIndex(ContactsContract.Contacts._ID));
                String name = cur.getString(
                        cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                    //Query phone here.  Covered next
                }
            }
        }
    }
}

Это приложение запускается как любое другое приложение для Android. Сначала создайте ContentResolver экземпляр в кр. Затем используйте экземпляр ContentResolver для запроса базы данных и верните Cursor со списком контактов. Запрос выполняется к URI, хранящемуся в ContactsContract.Contacts.CONTENT_URI. Затем проверьте, содержит ли курсор записи и, если да, переберите их. Поле идентификатора записи хранится в переменной id. Это будет использоваться в качестве параметра where позже. Также поле отображаемого имени хранится в имени строки.

Подробнее о Работа с контактами Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...