在这里,我使用此代码从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 未正确处理的情况。