我想获取存储在手机中的所有联系人并根据要求更新它们。
http://www.silverlightshow.net/items/Windows-Phone-8-Contacts-Integration.aspx
此链接显示获取联系人,但我没有获取所有联系人。我只得到使用我的应用程序创建的联系人。
有什么办法可以获取所有联系人并更改手机号码。
谢谢
我想获取存储在手机中的所有联系人并根据要求更新它们。
http://www.silverlightshow.net/items/Windows-Phone-8-Contacts-Integration.aspx
此链接显示获取联系人,但我没有获取所有联系人。我只得到使用我的应用程序创建的联系人。
有什么办法可以获取所有联系人并更改手机号码。
谢谢
从您提供的链接(强调添加):
在 Windows Phone 8 中,Microsoft 引入了“自定义联系人存储”[2] 的新概念。除了对用户联系人列表的只读访问和上面演示的使用单独任务创建新条目的方法(两者都在 7.x 中可用)之外,我们现在能够将自己的数据写入人员中心静默且未经用户同意。然而,应用程序仍然无法操纵来自其他地方的现有联系人。从这个意义上说,属于应用程序的数据在某种程度上与其他数据是隔离的。
这是设计使然,您无法编辑不是您创建的联系人。
尝试这样的事情
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
}
这不是我的未经测试的旧代码的复制粘贴,因此您可能需要更改某些内容
You cant' - stupid crappy MS don't even support contact import from vcard file. ALL MS want that you put every your data to their servers so they own it.
首先你应该在联系Capability
对于 wp8从WMAppManifest.xml添加
对于 wp8.1从Package.appxmanifest添加
现在定义一个类PhoneContact
来存储数据
public class PhoneContact {
public string Name { get; set; }
public string Number { get; set; }
public string Email { get; set; }
}
创建一个 ObservableCollection 并从构造函数调用以下操作以读取联系人列表。注意也使用以下命名空间
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);
}
}