2012-03-28 31 views
0

我有一個列表視圖,其中有三個人來自聯繫人列表。我怎樣才能顯示這些人的電話號碼?找到基於名稱的電話號碼 - android

有人可以發表一個代碼嗎?

for (int i=0;i<list.size();i++) 
    { 
     Log.i("TAG","PHONE NO IS: "+ ......)---------phone number? 

     //list.get(i).getName() - is the contact list persons name. 

     CounterResolvercr=getCounterResolver(); 
     Cursor cur= cr.query(ContactsContact.CONTENT_URI,null,null,null); 
     while (cur.moveToNext()) 
     { 
     if (cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME))== list.get(i).getName()) 

      { 
       String id= cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID); 
       Cursor pcur=cr.quesy(ContactsContact.CommonDataKinds.Phone.CONTENT_URI, null, ContactContract.CommonDataKInds.Phone.CONTACT_ID+"=?",new Strng[]{id},null); 

       while (pCur.moveToNext()) 
        { 
        String number =  pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 

       Log.d(TAG,number);//IS NOT PRINTING ANYTHING WHY?!!! 
        } 
       pcur.close() 
        } 
        } 
    } 
+0

這是不可靠的......但如果你知道名稱的**類型**,你可以將它包含在選擇參數和查詢中。 – ngesh 2012-03-28 12:54:48

+0

請清楚地提出問題。 – 2012-03-28 12:56:26

+0

好吧,我已經把一些代碼 – user1222905 2012-03-28 13:07:09

回答

2

這就是:屬於該聯繫人

static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] { 
    ContactsContract.Contacts._ID, 
    ContactsContract.Contacts.DISPLAY_NAME, 
    ContactsContract.Contacts.STARRED, 
    ContactsContract.Contacts.TIMES_CONTACTED, 
    ContactsContract.Contacts.CONTACT_PRESENCE, 
    ContactsContract.Contacts.PHOTO_ID, 
    ContactsContract.Contacts.LOOKUP_KEY, 
    ContactsContract.Contacts.HAS_PHONE_NUMBER, 
}; 

String name_to_search = "John Doe"; 

String select = "(" + ContactsContract.Contacts.DISPLAY_NAME + " == \"" +name_to_search+ "\")"; 
Cursor c = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, CONTACTS_SUMMARY_PROJECTION, select, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"); 
context.startManagingCursor(c); 

if (c.moveToNext()) 
{ 
    String id = c.getString(0); 
    ArrayList<String> phones = new ArrayList<String>(); 

    Cursor pCur = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null); 
    while (pCur.moveToNext()) 
    { 
     phones.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); 
     Log.i("", name_to_search+ " has the following phone number "+ pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); 
    } 
    pCur.close(); 
} 

電話號碼將被存儲到ArrayList的手機。

問候。

+0

非常感謝你。什麼是上下文? – user1222905 2012-03-28 13:37:49

+0

上下文是您的活動或應用程序上下文。從一個Activity中調用它。從其他地方,調用getApplicationContext()。 就你而言,你可以刪除'context.'! – Manitoba 2012-03-28 13:40:15

+0

什麼是contact_summary_projection並選擇? – user1222905 2012-03-28 13:46:38