Я пытаюсь получить имя и номер контакта после того, как пользователь выбрал контакт из средства выбора контактов.Я пытаюсь заставить мое приложение работать для SDK v3 и выше, поэтому я создал абстрактный класс, который будет вызывать только тот API, который мне нужен.У меня уже работает абстрактный класс (он выбирает правильный API), и у меня также работает API для SDK v3,4.У меня проблемы с получением нового API, который использует ContactsContract для работы.
Я могу получить имя контакта, но номер, который он получает, всегда является номером для идентификатора контакта ДО этого!Пример: у меня есть 2 контакта «Джон Доу» и «Джейн Доу» с соответствующими номерами «555-555-555» и «777-777-7777», добавленных в контакты.Джон Доу - ID = 1, а Джейн Доу - ID = 2.Если я попытаюсь узнать номер Джейн Доу, я получу номер Джона 555-555-5555.Если я попытаюсь достать Джона, я ничего не получу.Сбой проверки if (cursor.moveToNext ()).
Не могли бы вы помочь мне исправить это?Это сводит меня с ума.Я просмотрел много примеров и всегда получаю одну и ту же ошибку.
Данные Intent - это данные Intent из onActivityResult
import java.util.ArrayList;</p>
<p>import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;</p>
<p>class NewContactsAdapterBridge extends ContactsAdapterBridge {</p>
ArrayList<String> info = new ArrayList<String>();
ArrayList<String> getInfo (Activity a, Intent data) {
Uri contactData = data.getData();
Cursor cursor = a.managedQuery(contactData, null, null, null, null);
if (cursor.moveToFirst()) {
String id = cursor.getString(
cursor.getColumnIndex(ContactsContract.Contacts._ID));
String name = cursor.getString(cursor.getColumnIndexOrThrow
(ContactsContract.Contacts.DISPLAY_NAME));
String hasPhoneNumber = cursor.getString(cursor.getColumnIndexOrThrow(
ContactsContract.Contacts.HAS_PHONE_NUMBER));
info.add(name);
if (Integer.parseInt(hasPhoneNumber) > 0) {
Uri myPhoneUri = Uri.withAppendedPath(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
id);
Cursor pCur = a.managedQuery(
myPhoneUri,
null,
null,
null,
null);
if (pCur.moveToNext()) {
String number = pCur.getString( pCur.getColumnIndex
(ContactsContract.CommonDataKinds.Phone.NUMBER));
info.add(number);
}
}
}
return info;
}
}