Как получить у всех контактов ФИО и номер телефона, только если у них есть номер телефона? - PullRequest
1 голос
/ 13 января 2012

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

String contacts = "";

    Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
    while (cursor.moveToNext()) {
       String contactId = cursor.getString(cursor.getColumnIndex( 
       ContactsContract.Contacts._ID)); 
       String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
       if (hasPhone == "1") {
           contacts += cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)) + ":" + "how to get number?" + "|";
       }
    }
    cursor.close();

Строка hasPhone должна содержать «1», если у контакта есть номер телефона, затем добавьте это имя и номер телефона человека в строку «контакт». Несмотря на то, что hasPhone содержит «1», (проверено в logcat) код в выражении условия не выполняется. Также, как вы узнаете номер телефона, в ContactsContract нет ничего .Контакты для номера.

Ответы [ 2 ]

1 голос
/ 13 января 2012

Попробуйте это:

if (Integer.parseInt(hasPhone) > 0) { 
    Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +"="+ contactId, null, null); 
    phones.moveToNext(); //if you are interested in all contact phones do a while()
    String phoneNumber = phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER));
    phones.close();
    contacts += cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)) + ":" + phoneNumber + "|";
}
1 голос
/ 13 января 2012

Изменить на:

hasPhone.equals("1")

== оператор проверяет равенство объектов, то есть имеет ли hasPhone тот же объект, что и «1», что явно ложно.

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

Кроме того, рассмотрите возможность использования LookupKey, как описано здесь: http://developer.android.com/resources/articles/contacts.html

Если вы хотите сохранить будущую ссылку для конкретного контакта.

...