2013-03-16 95 views
1

我有一個絕對的噩夢讓我的聯繫人活動工作 - 我知道這是一個常見問題,但我似乎無法將現有解決方案應用於我的代碼 - 我無法理解這一點。任何幫助將非常感激,我在這裏撕掉我的頭髮。如何檢索聯繫人的電話號碼(Android)?

public class nominateContactsActivity extends ListActivity { 
public String strName; 
public String strLoginCode; 
public String strTelNo; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    setContentView(R.layout.nominatecontactsactivitytest); 

    this.getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    this.getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 


    Cursor cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI, 
      null, null, null, null); 
    startManagingCursor(cursor); 
    String[] contacts = new String[] {ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};  
    String[] columns = new String[] { ContactsContract.Contacts.DISPLAY_NAME}; 
    int[] to = new int[] { android.R.id.text1 }; 

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      android.R.layout.simple_list_item_multiple_choice, cursor, columns, to); 
    this.setListAdapter(adapter); 

    Button finishButton = (Button) this.findViewById(R.id.finishButton); 
    finishButton.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      SimpleCursorAdapter adapter = (SimpleCursorAdapter) nominateContactsActivity.this.getListAdapter(); 
      Cursor cursor = adapter.getCursor(); 

      ListView lv = nominateContactsActivity.this.getListView(); 
      SparseBooleanArray selectedItems = lv.getCheckedItemPositions(); 
      for (int i = 0; i < selectedItems.size(); i++) { 

       int selectedPosition = selectedItems.keyAt(i); 
       cursor.moveToPosition(selectedPosition); 
       Log.d("", cursor.getString(cursor.getColumnIndex(
         ContactsContract.Contacts.DISPLAY_NAME))+" is checked"); 
       Log.d("", "row id: "+adapter.getItemId(selectedPosition)); 
           } 
     } 
    }); 

我使用上面的代碼返回聯繫人列表 - 這工作得很好,顯示聯繫人的姓名在ListView爲我所願。然而,沒有電話號碼檢索,我只是不知道如何得到它們。

謝謝

回答

2

下面是讀取您可以嘗試的所有聯繫號碼和名稱的代碼。

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)); 
    } 
    phones.close(); 
+1

謝謝你,謝謝你,謝謝你! 這讓我瘋狂了兩週。 – user1593869 2013-03-16 04:11:21

+0

歡迎...... :)很高興它幫助你。 :) – GrIsHu 2013-03-16 04:23:20

+0

再次,非常感謝您的幫助之前 - 我現在有一個新的問題... 我只有一個聯繫在分貝後呢? (ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null); (phones.moveToNext()) { \t strName = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); (電話號碼)。 uploadContacts(); phones.close();}' – user1593869 2013-03-16 14:53:53

相關問題