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

1. 获取联系人

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

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

NOTE:

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

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

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

  1. ContactPicker contactPicker = new ContactPicker();
  2.  
  3. contactPicker.SelectionMode = ContactSelectionMode.Fields;
  4.  
  5. contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Email);
  6. contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Address);
  7. contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber);
  8.  
  9. //Select one or more contacts
  10. IList<Contact> contacts = await contactPicker.PickContactsAsync();
  11.  
  12. if (contacts != null &&
  13. contacts.Count > )
  14. {
  15. foreach (Contact contact in contacts)
  16. {
  17. // TODO:
  18. }
  19. }
  20.  
  21. //// Select only one contact
  22. //Contact contact = await contactPicker.PickContactAsync();
  23.  
  24. //if (contact != null)
  25. //{
  26. // //TODO:...
  27. //}

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

2. 邮件发送

  1. private async void SendMail(Contact recipient, StorageFile attchmentFile)
  2. {
  3. // Windows.ApplicationModel.Email
  4. EmailMessage message = new EmailMessage();
  5. // Mail subject
  6. message.Subject = "This is a test mail.";
  7.  
  8. message.Body = "This is a test mail, please ignore.";
  9.  
  10. if(attchmentFile != null)
  11. {
  12. RandomAccessStreamReference stream =
  13. RandomAccessStreamReference.CreateFromFile(attchmentFile);
  14.  
  15. EmailAttachment attachment = new EmailAttachment(attchmentFile.Name, stream);
  16.  
  17. // Set mail's attachment
  18. message.Attachments.Add(attachment);
  19. }
  20.  
  21. ContactEmail email = recipient.Emails.FirstOrDefault();
  22.  
  23. if(email != null)
  24. {
  25. EmailRecipient emailRecipient = new EmailRecipient(email.Address);
  26.  
  27. message.To.Add(emailRecipient);
  28. }
  29.  
  30. await EmailManager.ShowComposeNewEmailAsync(message);
  31. }

3. SMS消息发送

  1. private async void ComposeSms(Contact recipient,
  2. string messageBody,
  3. StorageFile attachmentFile,
  4. string mimeType)
  5. {
  6. var chatMessage = new Windows.ApplicationModel.Chat.ChatMessage();
  7.  
  8. chatMessage.Body = messageBody;
  9.  
  10. if (attachmentFile != null)
  11. {
  12. var stream = RandomAccessStreamReference.CreateFromFile(attachmentFile);
  13.  
  14. var attachment = new Windows.ApplicationModel.Chat.ChatMessageAttachment(
  15. mimeType,
  16. stream);
  17.  
  18. chatMessage.Attachments.Add(attachment);
  19. }
  20.  
  21. var phone = recipient.Phones.FirstOrDefault<Windows.ApplicationModel.Contacts.ContactPhone>();
  22. if (phone != null)
  23. {
  24. chatMessage.Recipients.Add(phone.Number);
  25. }
  26. await Windows.ApplicationModel.Chat.ChatMessageManager.ShowComposeSmsMessageAsync(chatMessage);
  27. }

感谢您的阅读。

[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. JVM内存垃圾回收方法

    1.概述 1.1.为什么要回收? 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断地分配内存空间而不进行回收.除非内存无限大,我们可以任性地分配而不回收,但是事实并非如此.所以,垃圾回收是必须 ...

  2. Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务

    前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然使用上一季的的项目背景(系列地址http://www.cnblogs.com/fzrain/p/34 ...

  3. phpstorm常用功能&快捷键(mac)

    command + delete 删除整行 option + comman +enter 下面增加一行 command + D 复制出一行 command + / 单行注释 control + shi ...

  4. 2016-WAS

    http://cuisuqiang.iteye.com/blog/1936402 http://gukeming888.iteye.com/blog/1706475 dd:2016-3-28 inst ...

  5. [Machine Learning & Algorithm] 神经网络基础

    目前,深度学习(Deep Learning,简称DL)在算法领域可谓是大红大紫,现在不只是互联网.人工智能,生活中的各大领域都能反映出深度学习引领的巨大变革.要学习深度学习,那么首先要熟悉神经网络(N ...

  6. Visual C++ 升级到 Visual Studio

    把项目从visual C++ MFC移到visual studio 2013有许多东西需要修改,尤其是工程本身不小的时候. 到最后一步的错误: error LNK2001: unresolved ex ...

  7. Python中模块安装文件的创建及使用

    在Python编程中,我们常常需要自己编写模块,当模块文件写好了,就需要创建安装文件,方便模块的发布. 此时,常用的方法,就是使用Python distutils(代表distribution uti ...

  8. MySQL ROOT密码更改

    MySQLROOT密码 # mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'lo ...

  9. HTTP返回码中301与302的区别 (转载)

    一.官方说法 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:  301 redirect: 301 代表永久性转移(Permanently Moved). 302 ...

  10. 【备忘】Conky配置

    贴配置: background yes use_xft yes xftfont Sans:size= xftalpha 0.8 update_interval own_window yes own_w ...