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 的情况。
我在这里使用此代码从 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 的情况。