Я создал приложение, в котором мне нужны все контакты, доступные в телефонной книге. Я показываю эти числа в списке. Приложение работает нормально, но иногда действие приложения закрывается, потому что курсор возвращает null.Это не всегда, но это случается несколько раз. Теперь, как я могу справиться с этим ????Получение всех контактов с телефона иногда возвращает NULL
Код
public static JSONArray getAllContactList(Context context) {
Cursor c = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
alAllContacts = new ArrayList<ContactModel>();
while (!(c == null) && c.moveToNext()) {
String id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String number = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (number.equalsIgnoreCase("1")) {
// Cursor phones = getActivity().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
// ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = '" + id + "'", null, null);
Cursor phones = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id, null, null);
while (phones.moveToNext()) {
String contactName = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String contactNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contactNumber = contactNumber.replace("+", "");
if (contactNumber.length() > 10) {
contactNumber = contactNumber.substring(2);
}
// contactNumber.replace("+91", "");
alAllContacts.add(new ContactModel(contactName, contactNumber));
//
}
}
}
c.close();
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < alAllContacts.size(); i++) {
jsonArray.put(alAllContacts.get(i).getJSONObject());
}
return jsonArray;
}
LogCat говорит, что я получаю нулевой указатель на этой линии
while (phones.moveToNext()) {
Также несколько раз я получить принудительное закрытие, потому что диалог работает, так мой код для отображения индикатора выполнения правильно
public static void showProgress(Context context, String msg, boolean isVisible) {
if (progressDialog == null) {
progressDialog = new ProgressDialog(context);
progressDialog.setMessage(msg);
progressDialog.setCancelable(false);
}
if (isVisible) {
progressDialog.show();
} else if (isVisible == false) {
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
}
смотрите мою ссылку, чтобы получить контакты http://stackoverflow.com/questions/19972085/android-display-contacts- of-type-custom/19972249 # 19972249 –
@BhanuSharma Sir Я правильно получаю контакты, но некоторое время я получаю нулевой указатель, так как я могу обработать этот нулевой указатель – user3917131
, как обрабатывать исключение из null-указателя? while (phones! = null && phones.moveToNext()) – pskink