[Windows phone] 讀取手機通訊錄整合

Windows phone如何讀取手機通訊錄做整合呢? 這只是一個簡單的功能,也許您在開發上用的到^^

說明


手機的通訊錄是每台手機必備的也是一定會用到的,應該沒有人手機沒有存任何電話之類的資料....,基本上系統內建的都很方便,如果您想開發有關通訊錄整合相關的App這個功能是必備的

實作


Step1

建立一個專案

1

Step2

點選MainPage.xaml後,在裡面加上一個ListBox和TextBlock(在下面的黑黑處,因為這不是模擬器畫面所以看不到值)

切記:記得在功能裡把ID_CAP_CONTACTS勾選

通訊錄1-文章

XAML程式碼


        
            
                
            
        
    


    
    
        
            
            
        

        
        
            
            
        

        
        
            
                
            
            
        
    

 

 

Step3

打開MainPage.xaml.cs,並在裡面加上程式碼,程式碼都有註解,

由於我們在ListBox上設計ItemTemplate,因此每一個通訊錄的資料都會顯示在ListBox中,

我們是透過Contacts類的Search方法,來實作這個通訊錄搜尋,採用非同步方法。

 

需先引用using Microsoft.Phone.UserData命名空間

通訊錄2-文章

using Microsoft.Phone.UserData;

接下來加上這段程式碼

通訊錄3-文章

public partial class MainPage : PhoneApplicationPage
    {
        // 建構函式
        public MainPage()
        {
            InitializeComponent();
            Loaded += new RoutedEventHandler(MainPage_Loaded);
        }

        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            Contacts contacts = new Contacts();
            contacts.SearchCompleted += (ss, arg) =>
            {
                //將搜尋到的資料填入ListBox
                this.listBox1.ItemsSource = arg.Results;
            };
            //非同步搜尋通訊錄資料
            contacts.SearchAsync(string.Empty, FilterKind.None, null);
        }

        private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (this.listBox1.SelectedItem == null) return;
            //取得選取的資料
            Contact item = this.listBox1.SelectedItem as Contact;
            string msg = "";
            msg += "\nCompleteName : " + item.CompleteName.FirstName;
            if (item.EmailAddresses.Count() > 0)
                msg += "\nEmail : " + item.EmailAddresses.FirstOrDefault().EmailAddress;
            if (item.PhoneNumbers.Count() > 0)
                msg += "\nPhone : " + item.PhoneNumbers.FirstOrDefault().PhoneNumber;
            this.textBlock1.Text = msg;
        }
    }

測試

通訊錄4-文章

結語


功能可以做成許多應用的App,一個大型App也可能包含數個小功能,主要還是要結合創意,加油! 快結束了...哈哈