Windows Phone 7 获取用户通讯录和日程安排信息

     在Windows Phone 7.0版本的API里面对用户手机上的信息基本上是不提供给开发者使用,不过还好在芒果更新里面,我们已经看到了微软正在渐渐地开放这些接口,在7.1版本的API里面多了命名空间Microsoft.Phone.UserData,在这个空间下提供了手机系统用户通讯录和日历数据操作的API,我相信微软在未来会在该空间下开放更多的接口来操作用户的数据,下面来看一下Microsoft.Phone.UserData空间下的类,主要包含了Contacts, Contact, AppointmentsAppointment这四个类,Contacts类允许你去查询用户的联系人数据,并且可以返回一个Contact类的集合,Appointments类允许你去查询用户的日程安排数据,并且可以返回一个Appointment类的集合。

    下面是从官方网站翻译的Microsoft.Phone.UserData空间下类,属性等信息,仅供参考,详细信息请查阅MSDN。

说明

Account

用户在手机上设置的提供联系人信息的账号类型,例如Facebook Microsoft Outlook等等。

Appointment

系统日程安排的类。

Appointments

提供了操作手机系统日常安排的类。

AppointmentsSearchEventArgs

提供SearchCompleted事件返回数据的类。

Attendee

包含了日程安排出席的信息类。

CompleteName

包含了联系人姓名信息的类。

Contact

通讯录类,包含了通讯录所有可用的信息。

ContactAddress

包含了联系人地址信息的类。

ContactCompanyInformation

包含了联系人公司信息的类。

ContactEmailAddress

包含了联系人邮件信息的类。

ContactPhoneNumber

包含了联系人电话号码信息的类。

Contacts

通讯录类,提供了操作用户手机通讯录联系人的事件和方法。

ContactsSearchEventArgs

提供SearchCompleted事件返回信息的类。

PhoneDataSharingContext

数据共享的基类。

枚举

说明

AddressKind

地址的种类。

AppointmentStatus

日程安排的状态。

EmailAddressKind

邮件地址的种类。

FilterKind

通讯录搜索的种类。

PhoneNumberKind

电话号码的种类。

StorageKind

用户通讯录和日程安排的数据提供源的种类。

Contact类的属性

属性名字

说明

Accounts

联系人的来源账号。

Addresses

联系人地址。

Birthdays

联系人的生日。

Children

联系人关联的子类别。

Companies

联系人的公司

CompleteName

联系人的完整名称。

DisplayName

联系人在通讯录的显示名称。

EmailAddresses

联系人的邮箱地址,枚举模板类型

IsPinnedToStart

联系人是否在手机主屏幕上显示。

Notes

联系人备注信息。

PhoneNumbers

联系人的电话号码。

SignificantOthers

联系人的其他关联信息。

Websites

联系人的网站。

 

Contacts类的属性

Accounts  获取通讯录关联的账号。

BaseUri

事件

SearchCompleted  搜索通讯录的事件。

方法

SearchAsync  异步搜索通讯录。

 

Appointment类属性

属性名字

说明

Account

来源账号。

Attendees

日程安排出席的活动事项

Details

活动的内容

EndTime

结束时间

IsAllDayEvent

是否全天活动

IsPrivate

是否私人活动

Location

地点

Organizer

组织者

StartTime

开始时间

Status

状态

Subject

标题

  下面用一个例子来测试一下获取手机用户的通讯录的信息。

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  阅读(3704)  评论(10编辑  收藏  举报

导航