Cursor.getString() null pointer exception on version 6.0

限于喜欢 提交于 2019-12-11 05:06:07

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!