2012-05-04 302 views
4

我需要能夠在Android中選擇多個聯繫人。流程如下:Android多個聯繫人選擇器(可選擇選擇哪個電話號碼)

  1. 用戶單擊打開「通訊錄」應用程序的按鈕。
  2. 但是,我不需要選擇一個聯繫人,而是需要能夠選擇多個聯繫人(在同一個啓動目標中)。
  3. 如果一個聯繫人有多個電話號碼,我需要用戶能夠選擇他想要選擇的電話號碼。

當我點擊Messaging應用程序中的「聯繫人」時,此功能已存在於我的三星Android手機(運行2.3薑餅)中。見下面的截圖:

enter image description here

enter image description here

enter image description here

+0

這是確切的,你想要什麼http://www.quicktips.in/how-to-create-multi-select-listview-android-with-custom-adapter/ –

回答

0

你將不得不寫這一切你自己。您可以使用ContactsContract供應商來查詢所有具有電話號碼的聯繫人,然後對於所選聯繫人,您可以查詢該聯繫人的所有電話號碼。如果您認爲合適,您可以在活動或對話框中顯示結果。

4

沒有這樣做的方式,所以你需要自己完成大部分工作。幸運的是,這並不難。

顯示

以顯示通訊錄您可以使用一個與多選選擇列表視圖模式,或者您可以創建自定義適配器,並將其綁定到一個普通列表視圖。我不認爲與多重選擇的列表視圖可以讓你爲每行放置除文本以外的任何東西,但你必須深入挖掘才能發現。

我已經使用自定義適配器方法的東西非常相似(除了多個電話號碼部分)。這很容易,我發現自定義適配器從長遠來看非常有用。

Custom Adapter Listview Tutorial

通過自定義適配器設置,您可以與所有的信息,包括他們的姓名和電話號碼的人創建的數據對象。在自定義適配器的getView中,您可以決定顯示每條信息的方式和方式。

收集信息

你需要使用ContactContract API來獲取信息,爲您的聯繫人。

Reading Contact Info

Reading ALL phone numbers for a Contact

0

不幸的是這個代碼不支持Android的

所有版本我知道它有點晚,但想分享這個! 我在網絡中發現了一些不完整的代碼,並在破解我的頭後,我終於找到答案! 基本上你啓動選取器,讓它返回額外數據=]

有沒有在網絡上的完整答案,所以希望它有助於一些靈魂在那裏!

享受:

public void pickContact(View v){ 
    try { 
     Intent phonebookIntent = new Intent("intent.action.INTERACTION_TOPMENU"); 
     phonebookIntent.putExtra("additional", "phone-multi"); 
     startActivityForResult(phonebookIntent, PICK_CONTACT); 
     // PICK_CONTACT IS JUST AN INT HOLDING SOME NUMBER OF YOUR CHOICE 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public String getData(String contact, int which) 
{ 
    return contact.split(";")[which]; 
} 

public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    final int URI = 0; 
    final int NUMBER = 1; 

    if (RESULT_OK != resultCode) return; 
    Bundle contactUri = data.getExtras(); 
    if (null == contactUri) return; 

    ArrayList<String> contacts = (ArrayList<String>)contactUri.get("result"); 
    Toast.makeText(getApplicationContext(), getData(contacts.get(0),NUMBER), Toast.LENGTH_SHORT).show(); 
}