Запутался, как запросить контакты в Android - PullRequest
0 голосов
/ 03 августа 2011

Я делаю приложение для Android, которое использует Контакты. Хорошо, что мне удалось как-то заставить его работать с Contacts.Phones, как видно на многих уроках. Проблема в том, что Contacts.Phones устарела и заменена ContactsContract. Мое приложение должно работать, начиная с Android 1.5+.

Мне нужно выполнить несколько простых операций, таких как: - запросить все контакты - запрос для конкретного контакта - резервное копирование всех контактов

Каков наилучший способ добиться этого, учитывая, что мне нужно, чтобы приложение работало на всех версиях Android. Нужно ли проверять текущий уровень API на телефоне и иметь 2 кодовых блока, один до api 5, другой после?

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Вот необязательное решение

int apiVersion = android.os.Build.VERSION.SDK_INT;

    if(apiVersion < 5) {
        ContentResolver cr = getContentResolver();
        Cursor cur = cr.query(People.CONTENT_URI, 
            null, null, null, null);
        if (cur.getCount() > 0) {
         while (cur.moveToNext()) {
             String id = cur.getString(cur.getColumnIndex(People._ID));
             String name = cur.getString(cur.getColumnIndex(People.DISPLAY_NAME));
         }
        }
    } else {
        String columns[] = new String[]{ ContactsContract.Contacts._ID,
                ContactsContract.Contacts.DISPLAY_NAME };       
        Cursor  cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
                        columns,                
                        null,               
                        null,               
                        ContactsContract.Data.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
        if (cursor.getCount() > 0) {
             while (cursor.moveToNext()) {
                long id = Long.parseLong(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)));   
                String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)).trim();

             }
        }
    }

А вот учебник по созданию приложения Поддержка старых и новых API в одном приложении это должно помочь вам.

0 голосов
/ 03 августа 2011

Использование ContentResolver.Попробуйте этот код:

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
            }
            }
    }
...