Windows Phone 7 获取用户通讯录和日程安排信息
在Windows Phone 7.0版本的API里面对用户手机上的信息基本上是不提供给开发者使用,不过还好在芒果更新里面,我们已经看到了微软正在渐渐地开放这些接口,在7.1版本的API里面多了命名空间Microsoft.Phone.UserData,在这个空间下提供了手机系统用户通讯录和日历数据操作的API,我相信微软在未来会在该空间下开放更多的接口来操作用户的数据,下面来看一下Microsoft.Phone.UserData空间下的类,主要包含了Contacts, Contact, Appointments和Appointment这四个类,Contacts类允许你去查询用户的联系人数据,并且可以返回一个Contact类的集合,Appointments类允许你去查询用户的日程安排数据,并且可以返回一个Appointment类的集合。
下面是从官方网站翻译的Microsoft.Phone.UserData空间下类,属性等信息,仅供参考,详细信息请查阅MSDN。
类 |
说明 |
用户在手机上设置的提供联系人信息的账号类型,例如Facebook ,Microsoft Outlook等等。 |
|
系统日程安排的类。 |
|
提供了操作手机系统日常安排的类。 |
|
提供SearchCompleted事件返回数据的类。 |
|
包含了日程安排出席的信息类。 |
|
包含了联系人姓名信息的类。 |
|
通讯录类,包含了通讯录所有可用的信息。 |
|
包含了联系人地址信息的类。 |
|
包含了联系人公司信息的类。 |
|
包含了联系人邮件信息的类。 |
|
包含了联系人电话号码信息的类。 |
|
通讯录类,提供了操作用户手机通讯录联系人的事件和方法。 |
|
提供SearchCompleted事件返回信息的类。 |
|
数据共享的基类。 |
枚举 |
说明 |
地址的种类。 |
|
日程安排的状态。 |
|
邮件地址的种类。 |
|
通讯录搜索的种类。 |
|
电话号码的种类。 |
|
用户通讯录和日程安排的数据提供源的种类。 |
Contact类的属性
属性名字 |
说明 |
联系人的来源账号。 |
|
联系人地址。 |
|
联系人的生日。 |
|
联系人关联的子类别。 |
|
联系人的公司 |
|
联系人的完整名称。 |
|
联系人在通讯录的显示名称。 |
|
联系人的邮箱地址,枚举模板类型 |
|
联系人是否在手机主屏幕上显示。 |
|
联系人备注信息。 |
|
联系人的电话号码。 |
|
联系人的其他关联信息。 |
|
联系人的网站。 |
Contacts类的属性
Accounts 获取通讯录关联的账号。
BaseUri
事件
SearchCompleted 搜索通讯录的事件。
方法
SearchAsync 异步搜索通讯录。
Appointment类属性
属性名字 |
说明 |
来源账号。 |
|
日程安排出席的活动事项 |
|
活动的内容 |
|
结束时间 |
|
是否全天活动 |
|
是否私人活动 |
|
地点 |
|
组织者 |
|
开始时间 |
|
状态 |
|
标题 |
下面用一个例子来测试一下获取手机用户的通讯录的信息。
MainPage.xaml文件
<ListBox Name="ContactResultsData" ItemsSource="{Binding}" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding DisplayName}" />
<!--电话号码-->
<ListBox ItemsSource="{Binding PhoneNumbers}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding PhoneNumber}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!--邮箱-->
<ListBox ItemsSource="{Binding EmailAddresses}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding EmailAddress}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!--地址信息-->
<ListBox ItemsSource="{Binding Addresses}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<StackPanel>
<TextBlock Text="{Binding PhysicalAddress.AddressLine1}"/>
<TextBlock Text="{Binding PhysicalAddress.City}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
MainPage.xaml.cs文件
using Microsoft.Phone.Controls;
using Microsoft.Phone.UserData;
namespace contactstest
{
public partial class MainPage : PhoneApplicationPage
{
private Contacts contacts;
public MainPage()
{
InitializeComponent();
contacts = new Contacts();
contacts.SearchCompleted += contacts_SearchCompleted;
contacts.SearchAsync("", FilterKind.DisplayName, "查询联系人");
}
//通讯录搜索完成事件处理
void contacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
{
ContactResultsData.DataContext = e.Results;
}
}
}
运行的效果:
posted on 2011-09-14 22:34 linzheng 阅读(3700) 评论(10) 编辑 收藏 举报