2013-03-04 72 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

感謝您的建議。這似乎並沒有爲我工作。我試着用不同的do-while循環,但不幸的是我的app force關閉了。這也是同樣的事情。 – Anirudh 2013-03-04 09:50:10

+0

你應該能夠獲得所有具有上述代碼的手機的聯繫人。 – 2013-03-04 16:29:45

+0

當我使用此代碼時,我的應用程序強制關閉。我從其他地方找到了合適的解決方案。無論如何,謝謝你的幫助。 – Anirudh 2013-03-05 05:40:27

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()); 
     } 
相關問題