【问题标题】:Integrating contact list for windows 7 phone into app将 Windows 7 手机的联系人列表集成到应用程序中
【发布时间】:2011-01-30 02:34:19
【问题描述】:

如何获取 windows 7 手机的联系人列表以在 win7 手机应用程序中使用?

【问题讨论】:

    标签: c# windows-phone-7 xna


    【解决方案1】:

    使用较早版本的 Windows Phone 7 SDK,只能使用选择器检索电话号码或电子邮件地址等。现在,使用 7.1 Mango SDK,可以从联系人中检索更多信息,例如AddressDisplayNameEmailAddresses 等。

    我将向您展示如何使用 C# 从 Windows Phone 7 中检索所有联系人。

    Contacts 类在命名空间 Microsoft.Phone.UserData 中定义,并从 PhoneDataSharingContext 扩展而来,并提供了一些用于与用户的联系人数据交互的方法和事件。

    public MainPage()
    {
    InitializeComponent();
    Contacts objContacts = new Contacts();
    objContacts.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(objContacts_SearchCompleted);
    objContacts.SearchAsync(string.Empty, FilterKind.None, null);
    }
    void objContacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
    {
    foreach (var result in e.Results)
    {
    lst.Add("Name : " + result.DisplayName + " ; Phone Number : " + result.PhoneNumbers.FirstOrDefault());
    }
    }
    

    Contacts 还可以让用户使用SearchAsync 方法搜索联系人。 FilterKind 决定了将用于过滤的字段,如PhoneNumberDisplayNameEmailAddress 等。当它是None 时,它可以列出所有联系人。

    请注意,我使用的是模拟器,因为我目前没有配备 Mango 的设备。

    public partial class MainPage : PhoneApplicationPage
    {
    // Constructor
    public MainPage()
    {
    InitializeComponent();
    Contacts objContacts = new Contacts();
    objContacts.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(objContacts_SearchCompleted);
    objContacts.SearchAsync(string.Empty, FilterKind.None, null);
    }
    
    void objContacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
    {
    var ContactsData = from m in e.Results
    select new MyContacts
    {
    DisplayName = m.DisplayName,
    PhoneNumber = m.PhoneNumbers.FirstOrDefault()
    };
    var MyContactsLst = from contact in ContactsData
    group contact by contact.DisplayName into c
    orderby c.Key
    select new Group<MyContacts>(c.Key, c);
    longlist1.ItemsSource = ContactsData;
    }
    }
    public class MyContacts
    {
    public string DisplayName { get; set; }
    public ContactPhoneNumber PhoneNumber { get; set; }
    }
    

    【讨论】:

      【解决方案2】:

      在 Windows Phone OS 7.1 中是可行的

      这是 How To Access Contact List Data For Windows Phone 上的 MSDN 文章

      这是文章中的代码 sn-p:

      using Microsoft.Phone.UserData;
      
      private void ButtonContacts_Click(object sender, RoutedEventArgs e)
      {
          Contacts cons = new Contacts();
      
          //Identify the method that runs after the asynchronous search completes.
          cons.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(Contacts_SearchCompleted);
      
          //Start the asynchronous search.
          cons.SearchAsync(String.Empty, FilterKind.None, "Contacts Test #1");
      }
      
      void Contacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
      {
          //Do something with the results.
          MessageBox.Show(e.Results.Count().ToString());
      }
      

      【讨论】:

        【解决方案3】:

        很遗憾,联系人 API 未在当前版本的 API 中公开。您可以获得的最接近的方法是使用来自 Tasks 命名空间的内容:
        http://msdn.microsoft.com/en-us/library/ff428753(v=VS.92).aspx

        您可以查找的两个是PhoneNumberChooseTaskEmailAddressChooserTask

        另外,由于所有 WP7 手机都使用实时联系人进行无线同步,因此您可以随时调查执行 Web 请求并访问 Windows Live Contacts API。我知道这可能不是您想要的,但它可能是目前最好的选择。

        【讨论】:

        • 我希望操作系统的未来版本能够更好地集成联系,让应用程序做更多事情。
        【解决方案4】:

        您可以让用户使用 PhoneNumberChooserTask 一次从他们的联系人列表中选择一个联系人(例如,SDK 7.0):
        http://msdn.microsoft.com/en-us/library/ff769543(v=vs.92).aspx#BKMK_Phone

        此外,在新的 Windows Phone SDK 7.1 版本(又名 Mango)的 Beta 版中,现在可以访问手机的所有联系人:
        http://www.ginktage.com/2011/05/how-to-retreive-all-contacts-from-windows-phone-7-using-c/

        注意:我听说 MS 直到 2011 年秋季才会允许在 Mango 开发的应用程序发布到应用程序商店。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多