原文:快速构建Windows 8风格应用15-ShareContract构建

本篇博文主要介绍共享数据包、如何构建共享源、如何构建共享目标、DataTransferManager类。

共享数据包

DataPackage(数据包)是共享数据标准。

共享数据格式可以是多种的,包括文本、URI、HTML、图像等,以及更多可扩展的格式。

我们可以通过以下方法设置需要的分享数据类型:

1)  SetText():设置共享文本,例如:

可以实现效果:

2)  SetUri():设置共享Uri;

3)  SetHtmlFormat():设置共享Html;

4)  SetBitmap():设置共享位图,例如:

可以实现效果:

5)  SetRtf():设置共享富文本;

6)  SetData():设置共享数据;

7)  SetStorageItems():设置共享文件或文件夹;

具体使用这些方法的示例代码如下:

示例代码地址:http://code.msdn.microsoft.com/windowsapps/Sharing-Content-Source-App-d9bffd84

 

如何构建共享源

首先作为共享源应用需要考虑的事情有哪些呢?

1)  侦听和处理要参与的共享事件;

2)  内容可以由两种方式共享:隐式[用户没有选择内容就选择“共享”]和显示[用户在应用中选择内容后选择“共享”];

3)  构建Data Package(数据包)以获得最佳结果;

那么如何在自己应用程序中构建共享源呢?

第一步:

需要在应用想要共享数据的页面代码中注册DataTransferManager类的DataRequested事件,该事件当用户划出Charms(超级按钮),并选择共享(Share Contract)时触发。

第二步:

在OnDataRequested函数中,编写应用程序要共享的数据包。

代码中首先需要通过args.Request获取到当前窗体请求共享对象,然后设置request对象的Data类的相关属性,就可以进行共享文本、图片等信息了。其中Data.Properties.Thumbnail可以设置数据包的缩略图。

通过以上步骤,我们就可以实现数据的共享了,可以在共享面板中看到要共享的数据包信息了。效果如图:

第三步:

共享完成之后,我们需要在当前操作页面中将DataRequested事件注销掉,以免耗费系统更多资源。

如何构建共享目标

通常情况下社交类、及时通讯类、云端存储类、打印设备类等应用适用成为共享目标应用。若我们应用程序接受来自其他应用提供的共享数据,那么我们的应用程序就成为了共享目标程序。

应用程序成为共享目标,可以增加应用或服务的使用率,并使服务拥有与用户相关的最新内容。

作为共享目标应用需要考虑哪些事情呢?

1)  注册为共享目标,指定接受的格式;

2)  构建共享用户界面,使其成为共享体验的一部分,包括:[在应用中共享的人员或位置选择]和[快速的轻量级体验];

3)  使用DataPackage,提取最适合共享的数据;

4)  共享完成后,最好提示用户共享成功,并且用户最好能够实现在共享的过程中看到共享进度或者取消共享的操作;

5)  返回一个Quicklink(快速链接),例如分享到的地方;

那么我们如何构建共享目标呢?

第一步:

打开我们应用程序的应用清单文件,将应用程序声明为Share Target,并设置能够接受数据包中数据格式。

第二步:

App.xaml.cs文件中重写OnShareTargetActivated方法,这样就能接收到系统调用的请求。

OnShareTargetActivated方法中当应用作为共享目标激活时,导航到应用程序共享目标页面(示例中导航到了MainPage页面)。

第三步:

共享目标页面中解析共享的数据包信息。

代码中首先将e.Parameter强制转换为ShareOperation类,然后通过shareOperation对象可以获取到数据包的属性,包含的文本、Uri、图片等其他格式的信息。

返回QuickLink

刚才我们提到了在获取打包数据并处理之后,可以返回系统一个QuickLink,代码可如下:

成功返回QuickLink之后,我们的应用就会作为常用目标出现在共享面板中了。

我们的目标应用也可以在获取数据包数据的方法中通过shareOperation.QuickLinkId来判断是否从QuickLink进入目标应用程序,从而根据不同的QuickLinkId做特别的处理。

DataTransferManager

DataTransferManager类在实现Share Contract时扮演了非常重要的角色,那么它包含哪些重要方法和事件呢?

1)  DataRequested事件:共享操作开始时触发;

2)  TargetApplicationChosen事件:目标应用被选择时触发;

3)  GetForCurrentView方法:获取与当前窗体相关的DataTransferManager;

4)  ShowShareUI方法:显示共享面板;

快速构建Windows 8风格应用15-ShareContract构建的更多相关文章

  1. 快速构建Windows 8风格应用24-App Bar构建

    原文:快速构建Windows 8风格应用24-App Bar构建 本篇博文主要介绍构建AppBar基本步骤.如何构建AppBar.如何在AppBar中构建上下文命令.如何在AppBar中构建菜单.如何 ...

  2. 快速构建Windows 8风格应用1-开发工具安装及模拟器使用

    原文:快速构建Windows 8风格应用1-开发工具安装及模拟器使用 本篇博文主要介绍的是开发Windows 8风格应用中常用的两个开发工具:Visual Studio 2012和Expression ...

  3. 快速构建Windows 8风格应用36-商店应用发布流程

    原文:快速构建Windows 8风格应用36-商店应用发布流程 引言 在发布应用之前,我们需要注册开发者账号才能够发布应用.我们可以登录https://appdev.microsoft.com/Sto ...

  4. 快速构建Windows 8风格应用32-构建辅助磁贴

    原文:快速构建Windows 8风格应用32-构建辅助磁贴 引言 Windows Phone中,我们开发者可能会开发的一个功能点是将数据列表中某一项"Pin To Start(固定到开始屏幕 ...

  5. 快速构建Windows 8风格应用17-布局控件

    原文:快速构建Windows 8风格应用17-布局控件 本篇博文主要介绍三种常用的布局控件:Canvas.Grid.StackPanel. Panel类是开发Windows 8 Store应用中一个重 ...

  6. 快速构建Windows 8风格应用14-ShareContract概述及原理

    原文:快速构建Windows 8风格应用14-ShareContract概述及原理 本篇博文主要介绍Share Contract概述.Share Contract实现原理.实现Share Contra ...

  7. 快速构建Windows 8风格应用13-SearchContract构建

    原文:快速构建Windows 8风格应用13-SearchContract构建 本篇博文主要介绍如何在应用中构建SearchContract,相应的原理已经在博文<快速构建Windows 8风格 ...

  8. 快速构建Windows 8风格应用9-竖直视图

    原文:快速构建Windows 8风格应用9-竖直视图 本篇博文主要介绍竖直视图概览.关于竖直视图设计.如何构建竖直视图 竖直视图概览 Windows 8为了支持旋转的设备提供了竖屏视图,我们开发的应用 ...

  9. 快速构建Windows 8风格应用10-设备方向

    原文:快速构建Windows 8风格应用10-设备方向 本篇博文主要介绍常用支持Windows 8操作系统设备的方向.如何获取当前设备方向.DisplayProperties类. 常用支持Window ...

随机推荐

  1. 与阿根廷一起学习Java Web四个发展:对于信息传输和信息传输

    发送短信和通用身份验证和用户注册系统消息提示功能模块,但是实现代码过于复杂.使用JSPGen后,深深发送消息.SMS程序包使复杂的简单非常活跃. 在短信模块:支持两种模式,它们被发送到第三方.地方平台 ...

  2. 亚马逊记AWS(Amazon Web Services)自由EC2应用

    很长时间,我听到AWS能够应用,但是需要结合信用卡,最近申请了. 说是免费的,我还是扣6.28,后来我上网查了.认为是通过进行验证.像服务期满将返回. 关键是不要让我进入全抵扣信用卡支付passwor ...

  3. App山寨疯狂 爱加密Apk加密平台防破解

    App山寨疯狂 爱加密Apk加密平台防破解,Android系统由于其开源性,眼下已占领全球智能机近80%的市场,远超微软的WP系统和苹果的IOS系统.然而也正是由于开源性,Android盗版App在国 ...

  4. Node.js可以做些什么?

    就像 JavaScript 至client天生,Node.js 生于网络.Node.js 我们可以做更多的不是开发一个网络 站这么简单,采用 Node.js.您可以轻松地开发:  具有复杂逻辑的站点 ...

  5. Java虚拟机参数设置(转)

    今天在加载一幅图片时,eclipse报出如下错误: “Exception in thread "main" java.lang.OutOfMemoryError: Java hea ...

  6. oracle HA 高可用性具体解释(之中的一个)

    oracle HA 高可用性具体解释(之二,深入解析TAF,以及HA框架) :http://blog.csdn.net/panfelix/article/details/38436197 一.HA F ...

  7. 快速解读GC日志(转)

    本文是 Plumbr 发行的 Java垃圾收集手册 的部分内容.文中将介绍GC日志的输出格式, 以及如何解读GC日志, 从中提取有用的信息.我们通过 -XX:+UseSerialGC 选项,指定JVM ...

  8. 使用 CodeIgniter 框架快速开发 PHP 应用(一)

    原文:使用 CodeIgniter 框架快速开发 PHP 应用(一) 对 CodeIgniter 的介绍大多数PHPer都想写出运行状态良好的应用程序,而且希望尽可能做得简单且不费事.这篇文章是有关 ...

  9. oracle rac常用的命令

    oracle rac常用的命令 节点层:olsnodes 网络层: oifcfg 集群层:crsctl,ocrcheck,ocrdump,ocrconfig 应用层:srvctl,onsctl,crs ...

  10. 汉字转拼音 oracle方式 [转]

    oracle汉字转拼音(获得全拼/拼音首字母/拼音截取等)   效果如下: Oracle 字符集 GBK 没有问题 , UTF -8 需要修改一下   Sql代码   --oracle汉字转拼音 PA ...