Android , ContactsContract.Groups 查询崩溃



在这里,我使用此代码从Android手机检索所有组。不幸的是,我在某些安卓手机上崩溃了,例如

安卓 5.0.0连结5(锤头)

错误:

尝试在空对象引用上调用接口方法 'int android.database.Cursor.getColumnIndex(java.lang.String)'

在这一行:

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 未正确处理的情况。

最新更新