这篇博客将介绍如何在UWP程序中获取联系人/邮件发送/SMS发送的基础操作。

1. 获取联系人

UWP中联系人获取需要引入Windows.ApplicationModel.Contacts名称空间。

ContactStore contactStore =
await ContactManager.RequestStoreAsync(ContactStoreAccessType.AllContactsReadOnly); IReadOnlyList<Contact> contacts = await contactStore.FindContactsAsync();

NOTE:

1). 获取的联系人列表是当前OS关联的微软账户(Hotmail/Outlook/Live邮箱)的联系人。

2). 获取联系人需要在Package.appxmanifest中将Contacts勾选上。

另外UWP提供了ContactPicker控件用来选取一个或者多个联系人,

ContactPicker contactPicker = new ContactPicker();

contactPicker.SelectionMode = ContactSelectionMode.Fields;

contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Email);
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Address);
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber); //Select one or more contacts
IList<Contact> contacts = await contactPicker.PickContactsAsync(); if (contacts != null &&
contacts.Count > )
{
foreach (Contact contact in contacts)
{
// TODO:
}
} //// Select only one contact
//Contact contact = await contactPicker.PickContactAsync(); //if (contact != null)
//{
// //TODO:...
//}

使用ContactPicker获取联系人时,不需要在Package.appxmanifest中勾选Contacts。

2. 邮件发送

private async void SendMail(Contact recipient, StorageFile attchmentFile)
{
// Windows.ApplicationModel.Email
EmailMessage message = new EmailMessage();
// Mail subject
message.Subject = "This is a test mail."; message.Body = "This is a test mail, please ignore."; if(attchmentFile != null)
{
RandomAccessStreamReference stream =
RandomAccessStreamReference.CreateFromFile(attchmentFile); EmailAttachment attachment = new EmailAttachment(attchmentFile.Name, stream); // Set mail's attachment
message.Attachments.Add(attachment);
} ContactEmail email = recipient.Emails.FirstOrDefault(); if(email != null)
{
EmailRecipient emailRecipient = new EmailRecipient(email.Address); message.To.Add(emailRecipient);
} await EmailManager.ShowComposeNewEmailAsync(message);
}

3. SMS消息发送

private async void ComposeSms(Contact recipient,
string messageBody,
StorageFile attachmentFile,
string mimeType)
{
var chatMessage = new Windows.ApplicationModel.Chat.ChatMessage(); chatMessage.Body = messageBody; if (attachmentFile != null)
{
var stream = RandomAccessStreamReference.CreateFromFile(attachmentFile); var attachment = new Windows.ApplicationModel.Chat.ChatMessageAttachment(
mimeType,
stream); chatMessage.Attachments.Add(attachment);
} var phone = recipient.Phones.FirstOrDefault<Windows.ApplicationModel.Contacts.ContactPhone>();
if (phone != null)
{
chatMessage.Recipients.Add(phone.Number);
}
await Windows.ApplicationModel.Chat.ChatMessageManager.ShowComposeSmsMessageAsync(chatMessage);
}

感谢您的阅读。

[UWP]UWP中获取联系人/邮件发送/SMS消息发送操作的更多相关文章

  1. 使用Amazon AWS SNS 发送 SMS 消息 .net

    1.浏览aws 开发人员指南 https://docs.aws.amazon.com/zh_cn/sns/latest/dg/sms_publish-to-phone.html 2.安装 aws sm ...

  2. 在 SQL Server 2005 中配置数据库邮件

    一.            SQL Server发邮件原理和组件介绍: 数据库邮件有4个组件:配置文件.邮件处理组件.可执行文件以及“日志记录和审核组件”. l  配置组件包括: 1)数据库邮件帐户包 ...

  3. URL转Drawable之 Android中获取网络图片的三种方法

    转载自: http://doinone.iteye.com/blog/1074283 Android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Applicatio ...

  4. RocketMQ源码 — 三、 Producer消息发送过程

    Producer 消息发送 producer start producer启动过程如下图 public void start(final boolean startFactory) throws MQ ...

  5. 获取UWP配置文件中的版本信息

    原文:获取UWP配置文件中的版本信息 在一般的软件中,我们都会显示当前软件的版本信息.以前作者都是在发版的时候修改一下UWP的配置文件中的版本信息和软件中的版本信息.但是每次这样很麻烦,有时间忘记修改 ...

  6. Android-->发送短信页面实现(短信发送以及群发和从电话本中选择联系人)-----------》2

    分析下怎么写 首先,我们需要一个输入框,可以手动的输入手机号码, 其次,很少有人愿意手动输入,那么我们需要提供一个按钮来给我们的用户选择自己电话本中的联系人(一次可以选择多个即群发) 然后,我们需要一 ...

  7. 在 UWP 应用中创建、使用、调试 App Service (应用服务)

    在 Windows 10 中微软为 UWP 引入了 App Service (即应用服务)这一新特性用以提供应用间交互功能.提供 App Service 的应用能够接收来自其它应用传入的参数进行处理后 ...

  8. Win10 UWP开发中的重复性静态UI绘制小技巧 1

    介绍 在Windows 10 UWP界面实现的过程中,有时会遇到一些重复性的.静态的界面设计.比如:画许多等距的线条,画一圈时钟型的刻度线,同特别的策略排布元素,等等. 读者可能觉得这些需求十分简单, ...

  9. 13、在 uwp应用中,给图片添加高斯模糊滤镜效果(一)

    如果在应用中,如果想要给app 添加模糊滤镜,可能第一想到的是第三方类库,比如 Win2d.lumia Imaging SDK .WriteableBitmapEx,不可否认,这些类库功能强大,效果也 ...

随机推荐

  1. CSS清浮动处理(Clear与BFC)

    在CSS布局中float属性经常会被用到,但使用float属性后会使其在普通流中脱离父容器,让人很苦恼 1 浮动带来布局的便利,却也带来了新问题 <!doctype html> <h ...

  2. 【About Queue】(待改)

    队列 队列满足FIFO规则,先进先出. C语言代码:(Segmentation fault你大爷(メ ゚皿゚)メ) #include<stdio.h> #include<stdlib ...

  3. NDK 笔记(一)

    参考:https://developer.android.com/studio/projects/add-native-code.html#link-gradle 使用Android Studio 2 ...

  4. 第4月第2天 nsinvocation崩溃 mvc videotrack

    1. __unsafe_unretained id result = nil; [invocation getReturnValue:&result]; return result; http ...

  5. Windows下将nginx安装为服务运行

    今天看到nginx这个小服务器软件正式版更新到了1.4.2,想玩下它.这个服务器软件虽小,但功能强大,是开源软件,有着良好的性能,被很多个人.企业,甚至大型企业所使用! 由于是在Windows下,所以 ...

  6. .net MVC中异常日志

    在日常工作中,我们有些项目可能进入了维护期,但是项目可能存在一些潜伏较深的bug导致我们在测试阶段并未发现,那么错误日志记录为我们的项目维护起着重要的作用.记录系统日志的方法如下 1.在系统根目录建立 ...

  7. saltstack 把数据返回到mysql服务器

    环境:http://www.cnblogs.com/zzzhfo/p/5790918.html master端需要安装MySQL-python和mysql-server mysql-server用于存 ...

  8. Virus.Win32.Virlock.b分析

    0x00 样本说明 分析样本是被0b500d25f645c0b25532c1e3c9741667的样本感染得到.感染前的文件是Tcpview.exe,一款windows网络连接查看工具. 感染前后文件 ...

  9. ng-app一些使用

    ng-app是angular的一个指令,代表一个angular应用(也叫模块).使用ng-app或ng-app=""来标记一个DOM结点,让框架会自动加载.也就是说,ng-app是 ...

  10. bzoj4025 二分图

    支持加边和删边的二分图判定,分治并查集水之(表示我的LCT还很不熟--仅仅停留在极其简单的模板水平). 由于是带权并查集,并且不能路径压缩,所以对权值(到父亲距离的奇偶性)的维护要注意一下. 有一个小 ...