2013-03-04 3 views
0

this 사이트의 자습서를 따라 Android에서 연락처의 전화 번호를 알아 왔습니다.마지막 연락처의 전화 번호를 가져올 수 없습니다.

내가 직면 한 문제는 마지막 연락처 번호를 얻지 못하는 것입니다. 예를 들어 연락처가 3 개인 경우 2의 번호가 표시됩니다.

누군가가 도움이된다면 내 코드를 게시하는 것이 좋습니다.

if(cur.getCount()>0){ 
     while(cur.moveToNext()){ 
      String id=cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
      String name=cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      if(Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))>0){ 
       pCur=getContentResolver(). 
         query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
           ContactsContract.CommonDataKinds.Phone._ID+"=?", 
           new String[]{id}, null); 
       while(pCur.moveToNext()){ 
        number.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); 
       }     
      } 
      pCur.close(); 
     } 
    } 

어떤 도움을 주시면 감사하겠습니다. 감사합니다.

============================

편집 : 아래에 관심이있는 사람들을 위해는 작동 코드입니다 나 :

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
    while (phones.moveToNext()) 
    { 
     String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
     String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     Log.i("Details", "Name: "+name+" Number: "+phoneNumber); 

    } 
    phones.close(); 

답변

0
String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone._ID, 
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
            ContactsContract.CommonDataKinds.Phone.NUMBER}; 
    String selection = ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER; 
         + 
    String[] selectionArgs = new String[] { "1" };        
    Cursor c = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
             projection, 
             selection, 
             selectionArgs, null} 
if (c.moveToFirst()) 
{ 
    do 
    { 
     Log.d("Test", "Contact: id = " + c.getLong(0) + " name = " + c.getString(1) + " phone = " + c.getString(2)); 
    } 
} 
+0

감사를 얻기 위해 다음 코드를 사용해보십시오. 이 doesnt는 나를 위해 일하는 것처럼 보인다. do-while 루프를 다르게 사용하려고 시도했지만 불행히도 내 응용 프로그램 강제 종료합니다. 이것 역시 마찬가지입니다. – Anirudh

+0

위의 코드를 가진 전화를 가지고있는 모든 연락처를 가져올 수 있어야합니다. –

+0

이 코드를 사용할 때 다시 앱이 종료됩니다. Ive는 다른 곳에서 적합한 솔루션을 찾았습니다. 어쨌든 도와 주셔서 감사합니다. – Anirudh

0

안녕하세요 모든 연락처 귀하의 제안에 대한

 Cursor c=dbHelper.getAllContact(); 
     startManagingCursor(c); 
     ArrayList<String> columnArray1 = new ArrayList<String>(); 
     if (c.moveToFirst()) 
     { 
      do {   
       columnArray1.add(c.getString(0)); 
      } while (c.moveToNext()); 
     } 
관련 문제