这篇文章都是乱说的,如果觉得有不好的,可以发我邮箱

应用之间需要相互的发送信息,就是我们经常用的分享



有个人看到一个网页很好,于是就希望把这个网页发送到邮件,那么这样的话就是使用应用通信。

因为每个应用都是不能访问其他应用数据,所以需要通信可以使用启动内置应用,文件关联应用。

发送数据

创建一个event 可以在用户发送,共享发送

            DataTransferManager data_transfer_manager = DataTransferManager.GetForCurrentView();
            data_transfer_manager.DataRequested += DataTransferManager_DataRequested;

当DataRequested,应用收到一个DataRequest,这个是DataPackage可以在里面写你要发送的信息。DataPackage必须写标题和数据,如果有描述也写

        private static void DataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args)
        {
            DataRequest request = args.Request;
        }

可以共享数据:

  • 纯文本
  • url
  • HTML
  • 文本
  • 图片
  • 文件
  • 自己弄的我也不知道是什么的可以共享的
            //文本
            request.Data.SetText(text);
            //uri
            //request.Data.SetUri(uri);过时
            request.Data.SetWebLink(uri);
            //html
            request.Data.SetHtmlFormat(html);
            request.Data.SetRtf(text);
            //文件
            request.Data.SetStorageItems(file);
            //图片
            request.Data.SetBitmap(bitmap);

我们需要和用户说我们在做的数据

            request.Data.Properties.Title = "标题";
            request.Data.Properties.Description = "我的博客blog.csdn.net/lindexi_gd";



开始通信

DataTransferManager.ShowShareUI();

有时候我们需要等待一些操作需要时间,不能马上就分享,我们可以使用

            request.Data.Properties.Title = "标题";
            request.Data.Properties.Description = "我的博客blog.csdn.net/lindexi_gd";

            request.Data.SetDataProvider(StandardDataFormats.Bitmap, (data_provider_request) =>
            {
                DataProviderDeferral deferral = data_provider_request.GetDeferral();
                //做时间比较长的操作
                //一般可以把操作内容放try,因为操作内容主要是io,有出错
                //如果放在try,把deferral.Complete();finally
                //try
                //{
                //    //操作
                //}
                //finally
                //{
                //    //deferral.Complete();
                //}
                deferral.Complete();
            });

要接受其他的app我们需要设置requestData.Properties.ContentSourceApplicationLink = ApplicationLink;

ApplicationLink是new Uri("ms-sdk-sharesourcecs:navigate?page=" + 页面名);

要接受其他的app我们需要设置



我们在说明写:林德熙博客

但说明其实没有什么用,主要是数据格式才是需要我们选择,在上也看到我们可以分享的数据有多种格式,那么满足格式的分享就会在分享看到我们的应用。



新建一个页面接分享,因为我想不到这个叫什么,我就放在MainPage

导航到MainPage就是分享打开

页面传参数可以使用,Frame frame.Navigate(页面,参数)

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {

        }

在App.xaml.cs

        protected override void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
        {
            Frame rootFrame = Window.Current.Content as Frame;
            if (rootFrame == null)
            {
                rootFrame=new Frame();
                Window.Current.Content = rootFrame;//http://blog.csdn.net/lindexi_gd
            }
            rootFrame.Navigate(typeof (MainPage), args.ShareOperation);
            Window.Current.Activate();
        }

我们可以在OnNavigatedTo拿分享

        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            ShareOperation share_operation = e.Parameter as ShareOperation;
            if (share_operation == null)
            {
                return;
            }
            //标题
            string shared_data_title = share_operation.Data.Properties.Title;
            string shared_data_description = share_operation.Data.Properties.Description;
            Uri url = share_operation.Data.Properties.ContentSourceWebLink;
            Uri application_link = share_operation.Data.Properties.ContentSourceApplicationLink;
            //图像
            RandomAccessStreamReference thumbnail = share_operation.Data.Properties.Thumbnail;
            //应用名称
            string application_name = share_operation.Data.Properties.ApplicationName;
            //数据
            //判断存在,如果不存在我们
            if (share_operation.Data.Contains(StandardDataFormats.WebLink))
            {
                Uri web_link =await share_operation.Data.GetWebLinkAsync();
            }
        }

当我们做完可以告诉share_operation.ReportCompleted();

如果错了可以告诉发送我们接受错

分享成功经常返回一个链接,我们把一个东西分享到百度云,那么我们可以拿到一个链接百度云,可以发送,这个QuickLink

QuickLink·我们需要标题,图标,id

            QuickLink quickLinkInfo = new QuickLink()
            {
                Id = QuickLinkId,
                Title = QuickLinkTitle,
                SupportedFileTypes = { "*" },
                SupportedDataFormats =
                    {
                        StandardDataFormats.Text,
                        StandardDataFormats.WebLink,
                        StandardDataFormats.ApplicationLink,
                        StandardDataFormats.Bitmap,//http://blog.csdn.net/lindexi_gd
                        StandardDataFormats.StorageItems,
                        StandardDataFormats.Html
                    },
                Thumbnail = thumbnail,
            };
            share_operation.ReportCompleted(quickLinkInfo);

文件启动

我们需要关联



在app.xaml.cs

        protected override void OnFileActivated(FileActivatedEventArgs args)
        {
           // args.Files
        }

Files包含文件可以拿来

博客:http://blog.csdn.net/lindexi_gd

原文:https://msdn.microsoft.com/en-us/windows/uwp/app-to-app/index

win10 uwp App-to-app communication 应用通信的更多相关文章

  1. Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App

    安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...

  2. Win10/UWP开发—使用Cortana语音与App后台Service交互

    上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比 ...

  3. Win10/UWP开发—使用Cortana语音指令与App的前台交互

    Win10开发中最具有系统特色的功能点绝对少不了集成Cortana语音指令,其实Cortana语音指令在以前的wp8/8.1时就已经存在了,发展到了Win10,Cortana最明显的进步就是开始支持调 ...

  4. UWP/Win10新特性系列—App Service

    Win10中,新增了一个很实用的新特性叫做App Service,App Service允许App不在前台运行的情况下提供出一个或多个对外服务供其他App使用,这看起来就好像Web开发中的Web Ap ...

  5. Win10/UWP开发—使用Cortana语音指令启动前台App

    这两天进群(53078485)找大咖的童鞋比较多,只是大咖比较忙,目前Demo还没有要到,这里先给大家转载一篇Aran大咖的博客学习下,以下是原文: Win10开发中最具有系统特色的功能点绝对少不了集 ...

  6. UWP开发:APP之间的数据交互(以微信为例)

    目录 说明 UWP应用唤醒方式 跟微信APP交互数据 APP之间交互数据的前提 说明 我们经常看到,在手机上不需要退到桌面,APP之间就可以相互切换,并且可以传递数据.比如我在使用知乎APP的时候,需 ...

  7. UWP Jenkins + NuGet + MSBuild 手把手教你做自动UWP Build 和 App store包

    背景 项目上需要做UWP的自动安装包,在以前的公司接触的是TFS来做自动build. 公司要求用Jenkins来做,别笑话我,之前还真不晓得这个东西. 会的同学请看一下指出错误,不会的同学请先自行脑补 ...

  8. 卸载win10内置windows app的方法

    原文:卸载win10内置windows app的方法 2015年,微软推出了windows10操作系统,其以漂亮的界面.良好的操作方式.方便的推送升级迅速获得了好多人的好评,因此,好多同学都换了win ...

  9. 【Win10 UWP】QQ SDK(一):SDK基本使用方法

    每当开发一个应用需要社交分享的应用时,总是心里咯噔一下:到底什么时候分享能加上QQ和微信?除了WP8.0版本的微信SDK,官方似乎从未正面发布过适应时代发展的QQ SDK,就连后台,也没有一个可以创建 ...

  10. Win10 UWP开发系列:实现Master/Detail布局

    在开发XX新闻的过程中,UI部分使用了Master/Detail(大纲/细节)布局样式.Win10系统中的邮件App就是这种样式,左侧一个列表,右侧是详情页面.关于这种 样式的说明可参看MSDN文档: ...

随机推荐

  1. 扫雷游戏制作过程(C#描述):第四节、菜单操作

    前言 这里给出教程原文地址. 该项目已经放在github上托管. 菜单操作 我们现在的程序单击菜单的时候不会有任何反应,这一节我们主要介绍菜单的相关代码,使得菜单能够正常使用. 现在我们希望在对应级别 ...

  2. 201521123070 《JAVA程序设计》第7周学习总结

    1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 Q1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码: pub ...

  3. 201521123112《Java程序设计》第2周学习总结

    1.本周学习总结 本周在课堂面授课粗略讲了<Java学习笔记>中的第三章,其内容大部分都与上学期学习的数据结构差不多,所以只是粗略的复习了一下就带过,然后通过将PTA上的实验便于我们本周的 ...

  4. 201521123032 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  5. 多线程:多线程设计模式(三):Master-Worker模式

    Master-Worker模式是常用的并行模式之一,它的核心思想是,系统有两个进程协作工作:Master进程,负责接收和分配任务:Worker进程,负责处理子任务.当Worker进程将子任务处理完成后 ...

  6. Apache2.4 + Tomcat7 负载均衡配置

    一.配置tomcat 多启动 1.下载免安装版 tomcat7 http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.81/bin/apache-t ...

  7. ACM学习之路___HDU 1385(带路径保存的 Floyd)

    Description These are N cities in Spring country. Between each pair of cities there may be one trans ...

  8. thinkphp5.0无限极分类及格式化输出

    首先我们来看数据表 从上图中可以发现,中国下有贵州,北京两个子节点,而北京有天安门一个子节点,纽约的子节点是"纽约的子类". 从pid为0看出,中国和纽约是顶级节点. 因为贵州的p ...

  9. Elevator poj3539

    Elevator Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 1072   Accepted: 287 Case Time ...

  10. E. Exposition

                                                                        E. Exposition time limit per tes ...