Я основываю свой код на примере входа в систему, входящем в состав Android Studio. Этот образец содержит код для заполнения AutoCompleteTextView
адресами электронной почты, связанными с контактом устройства ContactsContract.Profile
. то есть владельца телефона, я.Погрузчик для данных контакта «Профиль»
Мне нужно продолжать использовать методы интерфейса LoaderCallbacks
- onCreateLoader()
и onLoaderFinished()
.
Я хочу, чтобы принести дополнительные подробности о контакте как:
- номер телефона
- имя
- фамилия
Чтобы достичь этого, у меня есть попытался добавить дополнительные поля к интерфейсу ProfileQuery
, определенному в sam PLE (который работает правильно, чтобы принести адрес электронной почты):
private interface ProfileQuery {
String[] PROJECTION = {
// these fields as per Android Studio sample
ContactsContract.CommonDataKinds.Email.ADDRESS,
ContactsContract.CommonDataKinds.Email.IS_PRIMARY,
// these fields added by me
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME,
ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME
};
}
Я модифицировал метод onCreateLoader()
удалить ИНЕКЕ сэмпла в надежде получить дополнительные данные:
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
return new CursorLoader(this,
// Retrieve data rows for the device user's 'profile' contact.
Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI,
ContactsContract.Contacts.Data.CONTENT_DIRECTORY), ProfileQuery.PROJECTION,
// select all fields
null, null,
// Show primary email addresses first. Note that there won't be
// a primary email address if the user hasn't specified one.
ContactsContract.Contacts.Data.IS_PRIMARY + " DESC");
}
Для чего на данный момент мои onLoadFinished()
просто регистрирует полученные данные:
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Log.d("xxx", cursor.getString(0) + cursor.getString(1) + cursor.getString(2) + cursor.getString(3) + cursor.getString(4));
cursor.moveToNext();
}
}
Я хотел бы, чтобы каждая строка курсора давала мне полный набор данных, относящихся к контакту профиля. Вместо этого я получаю, казалось бы, случайные поля из этого контакта.
Как я могу получить подробную информацию из моего профиля контакта:
- адрес электронной почты
- номер телефона имя
- имя
- семьи?
связанные: [Лучший способ получить доступ все детали контактов android] (http://stackoverflow.com/questions/8506985/best-way-to-access-all-the-details-of-android-contacts) –