阅读所有手机通讯录并进行更新。 Windows Phone 8

时间:2013-08-21 15:51:18

标签: c# windows-phone-8 contacts

我希望将所有联系人存储在手机中,并根据要求进行更新。

http://www.silverlightshow.net/items/Windows-Phone-8-Contacts-Integration.aspx

此链接显示获取联系人但我没有收到所有联系人。我只收到使用我的应用创建的联系人。

我有什么方法可以获得所有联系人并更改手机号码。

由于

4 个答案:

答案 0 :(得分:3)

从您提供的链接(强调添加):

  

借助Windows Phone 8,Microsoft引入了“自定义”的新概念   联系商店“[2]。除了对用户的只读访问权限   联系人列表和上面演示的使用单独任务的方法   我们现在能够创建新条目(两者都在7.x中可用)   在没有用户的情况下静默地将我们自己的数据写入人员中心   同意。 然而,应用仍然无法操纵现有的联系人   来自其他地方。从这个意义上说,属于的数据   一个应用程序与其他应用程序有些隔离。

这是设计使然,您无法编辑未创建的联系人。

答案 1 :(得分:1)

尝试这样的事情

void GetContact()
{
    cons = new Contacts();
    //Identify the method that runs after the asynchronous search completes.
    cons.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(ContactsSearchCompleted);
    //Start the asynchronous search.
    cons.SearchAsync(String.Empty, FilterKind.None, "Contacts Test #1");
}

private void ContactsSearchCompleted(object sender, ContactsSearchEventArgs e)
{
    cons.SearchCompleted -= ContactsSearchCompleted;
    //e.Results should be the list of contact, since there's no filter applyed in the search you shoul have all contact here
}

这不是我未经测试的旧代码的复制粘贴,因此您可能需要更改某些内容

答案 2 :(得分:0)

你不能' - 愚蠢的蹩脚MS甚至不支持从vcard文件导入联系人。所有MS都希望您将所有数据都放到他们的服务器上,以便他们拥有它。

答案 3 :(得分:0)

首先,您应该联系Capability

for wp8 添加WMAppManifest.xml

enter image description here

for wp8.1 Package.appxmanifest

添加

enter image description here

现在定义一个类PhoneContact来存储数据

public class PhoneContact {
    public string Name { get; set; }
    public string Number { get; set; }
    public string Email { get; set; }
}

创建一个ObservableCollection并从构造函数调用以下操作来读取联系人列表。 N.B 还使用以下命名空间

using Microsoft.Phone.UserData;
using System.Collections.ObjectModel;

ObservableCollection<PhoneContact> phoneContact;
public MainPage() {
     InitializeComponent();
     phoneContact = new ObservableCollection<PhoneContact>();
     ReadPhoneContact();
}

void ReadPhoneContact(){
     Contacts cnt = new Contacts();
     cnt.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(Contacts_SearchCompleted);
     cnt.SearchAsync(String.Empty, FilterKind.None, "Contacts Test #1");
}

阅读完所有联系后发生以下事件。你可以阅读多个联系电话,电子邮件等。

void Contacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
{
   foreach (var item in e.Results) {
      var contact = new PhoneContact();
      contact.Name = item.DisplayName;
      foreach (var pn in item.PhoneNumbers)
          contact.Number = string.IsNullOrEmpty(contact.Number) ? pn.PhoneNumber : (contact.Number + " , " + pn.PhoneNumber);
      foreach (var ea in item.EmailAddresses)
           contact.Email = string.IsNullOrEmpty(contact.Email) ? ea.EmailAddress : (contact.Email + " , " + ea.EmailAddress);
      phoneContact.Add(contact);
   }  
}