2012-06-17 7 views
-1

한 그룹 (예 : 가족)의 모든 세부 정보를 얻으려고합니다.특정 그룹 안의 연락처 세부 정보를 모두 얻으려면 어떻게해야합니까?

코드 :

Cursor c = managedQuery(Data.CONTENT_URI, new String[] { 
      Contacts.DISPLAY_NAME, Contacts._ID,GroupMembership.CONTACT_ID }, 
      GroupMembership.GROUP_ROW_ID + " = ?", 
      new String[] { groupID }, Phone.TIMES_CONTACTED + " DESC"); 

취득 이름과 사진 :

while (c.moveToNext()&&temp_id<30) 
     {   
      String id = c.getString(personIdx); 

      //c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      Log.e("myTag", id); 

      // get name 
      try{ 
       personNameText = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

      }catch (Exception e) { 
       e.printStackTrace(); 
      } 
      // get photo 
      try{ 
       bmp = loadContactPhoto(getContentResolver(),Long.parseLong(id)); 
       bmp = bmp.createScaledBitmap(bmp, getResources().getDrawable(R.drawable.contact).getIntrinsicWidth(), 
         getResources().getDrawable(R.drawable.contact).getIntrinsicHeight(), false); 

      }catch (Exception e) { 
       // TODO: handle exception 
      } 

      // get number and email 
      try 
      { 
       String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 

       if (hasPhone.equalsIgnoreCase("1")) 
        hasPhone = "true"; 
       else 
        hasPhone = "false" ; 

       if (Boolean.parseBoolean(hasPhone)) 
       { 

        getNumbers(id); 
       } 
      }catch (Exception e) { 
       e.printStackTrace(); 
      } 

      // get email 
      String email = ""; 
      try{ 
       Cursor emailCur = getContentResolver().query( 
         ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
         null, 
         ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
         new String[]{id}, null); 

       while (emailCur.moveToNext()) { 
        email = emailCur.getString(
          emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
       } 
       emailCur.close(); 


      }catch (Exception e) { 
       e.printStackTrace(); 
      } 

삽입 데이터베이스

temp_id++; 

       insertData(temp_id, bitmaptoByteArray(bmp), phoneNamberText, personNameText, 
         email); 
여기에 언급 된 모든 기능을 아주 잘 작동

에! 문제는 사람들의 이름 만 얻고 다른 세부 사항은 얻지 못한다는 것입니다. 문제는 내가 잘못 본 것 같아요. 도움을 주시면 감사하겠습니다.

답변

0

managedQuery() 메소드의 두 번째 인수 인 프로젝션은 리턴 할 컬럼을 지정합니다. 당신이있어 순간

:

new String[] {Contacts.DISPLAY_NAME, Contacts._ID,GroupMembership.CONTACT_ID } 

다른 정보를 가져 오기 위해, 당신은 그 인수에 포함 할 필요가있다. 당신은 연락처 이름, 전화 번호 및 이메일 주소를 표시하려는 경우, 영사는 다음과 같이 보일 것이다 :

new String[] {Contacts.DISPLAY_NAME, Phone.NUMBER, Email.ADDRESS} 

이 연락처 데이터에 뭔가를 찾을 때 사용되는 상수에 대한 개요는 CommonDataKinds에서보세요 표. 자세한 내용은

은 TNX 당신은 내가이 모든 것들에 전송하는 데 필요한 ID 조금 더 자세히 설명해 수

+0

this 읽기 – user1458530

관련 문제