Вот код, который используется, чтобы получить контактную информацию:Android Контакты Content Provider иногда возвращает пустые телефонные номера
String id = data.getData().getLastPathSegment();
Cursor cursor = getActivity().getContentResolver()
.query(ContactsContract.Data.CONTENT_URI,
new String[] {ContactsContract.Data.DISPLAY_NAME},
ContactsContract.Data.CONTACT_ID + "=?",
new String[]{id},
null);
// short circuit if we didn't pick a contact
if (cursor.getCount() == 0) {
return;
}
String contact = "";
String contactName = "";
//code to get contact name
if (cursor.moveToFirst() && cursor.getString(0) != null) {
contact = contact + cursor.getString(0) + ",";
contactName = cursor.getString(0);
}
else {
contact = contact + ","; //changed
}
cursor.close();
// code to get phone number
cursor = getActivity().getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
newString[{ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.TYPE},
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?",
new String[]{id},null);
if (cursor.moveToFirst() && cursor.getString(0) != null) {
contact = contact + cursor.getString(0) + ",";
contact = contact + cursor.getString(0) + ",";
}
else {
contact = contact + ",,"; //changed
}
cursor.close();
//Code to get email
cursor = getActivity().getContentResolver()
.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.Email.ADDRESS},
ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=?",
new String[]{id},null);
if (cursor.moveToFirst() && cursor.getString(0) != null) {
contact = contact + cursor.getString(0);
}
cursor.close();
contact = contact.replace("+", "");
Log.i("TAG", "CONTACT INFO = " + contact);
То, что я пытаюсь сделать:
Здесь я запрос об контакт имя, номер телефона и адрес электронной почты из контактов через поставщика контента и объединить все три в одну строку с запятыми, разделяющими их внутри строки ,
Проблема:
Я получаю имя контакта и адрес электронной почты, без каких-либо проблем. Однако, когда я выбираю некоторые контакты от контакта, номер телефона, возвращенного пустым.
Контакты, которые возвращают пустые телефонные номера, - это номера телефонов из другой страны, из моего текущего местоположения.
Я сейчас в Канаде, и когда я выбираю канадские контакты, я правильно получаю номер телефона.
Однако, когда я выбираю номера телефонов из Индии, число не возвращается, вместо этого я получаю пустой результат.
То же самое происходит, когда я выбираю Контакт с цифрами типа «12345» или «5555555555» и т. Д.
Мой вопрос
Может быть, что Android пытается проверить подлинность числа и возвращает пустой номер, если он находит номер телефона Invalid? * (, вероятно, нет! Должно быть, моя ошибка!) *
Как я могу решить эту проблему? Не могу ли я получить значение номера телефона так же, как он сохраняется в контактах пользователя?
Приносим извинения за любые недвусмысленности в коде или моем вопросе. Я начинающий программист и очень благодарен всем вашим материалам!
Я пытаюсь запустить код. Однако я не мог понять 'Util.formatMobileNumber()'. Из какой библиотеки является Util? – rgv
Игнорируйте этот Util.formatMobileNumber(), который я использовал для форматирования мобильных номеров с длиной <8. Я отредактировал свой ответ, вы можете проверить сейчас –
Работает ли это? У меня почти такая же проблема. Не могли бы вы мне помочь? –