问题
When I am trying to get contact on device with its email type. It crashes with null pointer exception on cursor.T have added null checks even to resolve the problem..but don't helped me a lot.
private String getEmailsJsonString(String id, String label) {
JSONArray emailJsonArray = new JSONArray();
Cursor emailCursor = mContentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.Email.CONTACT_ID, ContactsContract.CommonDataKinds.Email.DATA, ContactsContract.CommonDataKinds.Email.TYPE},
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{id},
null);
if (emailCursor.getCount() > 0) {
int emailColIdx = emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA);
int email_type = emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE);
while (emailCursor.moveToNext()) {
String phone_label = null;
if(email_type != 0 || email_type != -1 && emailCursor.getString(email_type) != null){
switch (emailCursor.getString(email_type)) {
case "1":
phone_label = "Home";
break;
case "4":
phone_label = "Mobile";
break;
case "2":
phone_label = "Work";
break;
case "3":
phone_label = "Other";
break;
default:
phone_label = "Home";
break;
}
}
emailJsonArray.put(HibeUtil.getEmailJsonObject(emailCursor.getString(emailColIdx), "add", phone_label));
}
}
if (emailCursor != null) {
emailCursor.close();
}
return emailJsonArray.toString();
}
CrashLogs:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.hashCode()' on a null object reference
at com.impressico.hibe.ui.minimvp.contacts.AddContactPresenter.getEmailsJsonString(AddContactPresenter.java:184)
at com.impressico.hibe.ui.minimvp.contacts.AddContactPresenter.getContactFromCursor(AddContactPresenter.java:116)
at com.impressico.hibe.ui.minimvp.contacts.AddContactPresenter.showDeviceContactList(AddContactPresenter.java:85)...............
来源:https://stackoverflow.com/questions/39177616/cursor-getstring-null-pointer-exception-on-version-6-0