2012-03-30 34 views
3

我想從我的聯繫人列表中獲取他姓名的電話號碼。我已經使用下面的代碼,但它不能正常工作。告訴我我錯在哪裏。如何從我的聯繫人列表中的人名獲取電話號碼android

  try {     
     cursor_company =getContentResolver().query(ContactsContract.Data.CONTENT_URI, 
null,ContactsContract.Data.DISPLAY_NAME+ " = " + "sidharth", null, null);   
       }   
     catch(Exception e)    
     {  
     System.out.println("this is exception "+e);    
     }   
     String phone_number;   
     while (cursor_company.moveToNext()) {   
     Phone_number =cursor_company.getString(   
     cursor_company.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));    
    System.out.println(" this is user no. is"+phone_number);   
       }    
     cursor_company.close();    
     }    

例外來了,當我運行該代碼如下

android.database.sqlite.SQLiteException: no such column: bhawana: , while compiling: SELECT data_version, phonetic_name, phonetic_name_style, contact_id, lookup, data12, data11, data10, mimetype, data15, data14, data13, display_name_source, data_sync1, data_sync3, data_sync2, agg_presence.chat_capability AS contact_chat_capability, data_sync4, account_type, custom_ringtone, sp, status_updates.status AS status, data1, data4, data5, data2, data3, sns_id, data8, data9, group_sourceid, data6, account_name, data7, display_name, in_visible_group, display_name_alt, contacts_status_updates.status_res_package AS contact_status_res_package, is_primary, contacts_status_updates.status_ts AS contact_status_ts, raw_contact_id, times_contacted, contacts_status_updates.status AS contact_status, status_updates.status_res_package AS status_res_package, status_updates.status_icon AS status_icon, contacts_status_updates.status_i 
+0

有什麼異常? – Sameer 2012-03-30 07:33:58

+0

是的例外是「找不到列」我也可以顯示你完整的一個,如果你想第一眼看到 – 2012-03-30 07:36:59

+0

我沒有看到你的代碼有什麼問題。你能告訴我們什麼是問題嗎?爲什麼它不能正常工作?什麼是返回? – Th0rndike 2012-03-30 07:37:55

回答

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 = "sidharth"; 

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

我會檢查這個Nimit – 2012-03-30 07:38:00

+0

當然。如果您發現我的答案有用,請標記爲答案。 :-) – Nimit 2012-03-30 07:41:41

+0

謝謝Nimit我的問題現在已經解決了:) – 2012-03-30 07:44:34

2

使用光標的moveToFirst()功能專注於比賽,然後調用getString

相關問題