2015-01-04 3 views
0

여기이 코드를 사용하여 Android 휴대 전화에서 모든 그룹을 검색합니다. 불행히도 일부 Android 휴대 전화에서 충돌이 발생하고 있습니다.Android, ContactsContract.Groups query crash

안드로이드 5.0.0 넥서스 5 (귀상어)

ERROR :이 라인에서

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

:

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(); 
} 
} 

: 여기

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

내 코드입니다 어떻게 해결할 수 있습니까? 감사 !

+0

'c'가 null 인 것을 확인하십시오. –

+0

@shayanpourvatan이 가리키는 것처럼,'c'가'null' 인 이유를 찾아야합니다. [작은 프로그램을 디버깅하는 방법] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)을 읽어보십시오. – honk

+0

당신은 그것을 잡으려고하는 것을 의미합니까? 어쩌면이 오류를 고칠 수있는 또 다른 새로운 quary가 있습니까? –

답변

0

위의 ContactsContract.Groups에서 작성한 쿼리가 일부 전화기의 데이터를 반환하지 않을 수 있습니다. NullPointerException이 올바르게 처리되지 않는 경우입니다.