Android , ContactsContract.Groups 查询崩溃

Android , ContactsContract.Groups query crash

我在这里使用此代码从 android phone 中检索所有组。 不幸的是,我在某些 android phone 上遇到了崩溃,例如

安卓5.0.0 Nexus 5(锤头)

错误:

Attempt to invoke interface method 'int android.database.Cursor.getColumnIndex(java.lang.String)' on a null object reference

在这一行:

final int IDX_ID = c.getColumnIndex(ContactsContract.Groups._ID);

这是我的代码:

public void loadGroups() {

    if (groupsV.size()==0){

        final String[] GROUP_PROJECTION = new String[] {

        ContactsContract.Groups._ID, ContactsContract.Groups.TITLE,ContactsContract.Groups.SUMMARY_WITH_PHONES,ContactsContract.Groups.ACCOUNT_TYPE};

        Cursor c = getContentResolver().query(ContactsContract.Groups.CONTENT_SUMMARY_URI,GROUP_PROJECTION,ContactsContract.Groups.DELETED+"!='1' AND "+ContactsContract.Groups.GROUP_VISIBLE+"!='0' ",null,null);

        final int IDX_ID = c.getColumnIndex(ContactsContract.Groups._ID);
        final int IDX_TITLE = c.getColumnIndex(ContactsContract.Groups.TITLE);

        while (c.moveToNext()) {        
            c.getString(IDX_ID);
            c.getString(IDX_TITLE);

           int users = c.getInt(c.getColumnIndex(ContactsContract.Groups.SUMMARY_WITH_PHONES));

           String groupType = c.getString(c.getColumnIndex(ContactsContract.Groups.ACCOUNT_TYPE));

        if (users > 0 && groupType.equals("vnd.sec.contact.phone")){

          String group = c.getString(IDX_ID)+","+c.getString(IDX_TITLE)+","+users;

           groupsV.add(group);
        }
    }

   c.close();
 }
}

请问我该如何解决这个问题?谢谢!

您在上述 ContactsContract.Groups 上进行的查询可能不会在某些手机上返回任何数据。这看起来像是未正确处理 NullPointerException 的情况。