title author date CreateTime categories
win10 uwp App-to-app communication 应用通信
lindexi
2018-08-10 19:16:51 +0800
2018-2-13 17:23:3 +0800
Win10 UWP

这篇文章都是乱说的,如果觉得有不好的,可以发我邮箱
本文主要讲如何让两个应用之间传输消息,也就是我们经常用的分享。我们可以使用的有剪辑版、UWP分享、Uri启动应用多个方式。

如果有个人看到一个网页很好,于是就希望把这个网页发送到邮件,那么这样的话就是使用应用通信。
因为每个应用都是不能访问其他应用数据,所以需要通信可以使用启动内置应用,文件关联应用。

发送数据

创建一个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

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

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

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

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

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

  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. 2018最新苹果APP上架App Store流程(超详细)

    本文转发:https://blog.csdn.net/xxw888/article/details/73618837 2018最新整理iOS app上架app详细教程 上架iOS需要一个付费688的开 ...

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

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

  9. Thank you for your resubmission. Performance - 2.3.10 We noticed that your app or its metadata includes irrelevant third-party platform information. Specifically, Android logo is mentioned in the

    被拒很多次,各种修改,最后发现是提交的时候,含有安卓的图标!欲哭无泪呀! Thank you for your resubmission. Performance - 2.3.10 We notice ...

  10. 10款无需编程的App DIY开发工具

    10款无需编程的App DIY开发工具 你有一个很棒的创意但不会编程怎么办?外包.合伙开发还是从零学编程?这里提供另外一种方式--使用无需编程的App  DIY开发工具.DIY开发工具不仅节省了开发时 ...

随机推荐

  1. 记录-记一次不规范使用key引发的惨案

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 平时在使用v-for的时候,一般会要求传入key,有没有像我一样的小伙伴,为了省心,直接传索引index,貌似也没有遇到过什么问题, ...

  2. FFmpeg开发笔记(六)如何访问Github下载FFmpeg源码

    ​学习FFmpeg的时候,经常要到GitHub下载各种开源代码,比如FFmpeg的源码页面位于https://github.com/FFmpeg/FFmpeg.然而国内访问GitHub很不稳定,经常打 ...

  3. sys_stat_statements 扩展使用介绍

    sys_stat_statements 模块提供追踪服务器所执行的所有SQL语句的执行统计信息,可以用于统计数据库的资源开销,如分析TOP SQL. KingbaseES V8R6版本该插件已经内置化 ...

  4. 【问题解决1】fatal error: X11/XXXX.h: No such file or directory

    问题现象 编译鸿蒙代码时,报如下类似的错误: 错误1: 错误2: 解决方法 step 1:安装依赖文件 sudo apt-get install apt-file sudo apt-file upda ...

  5. 个性化定义多个 Git 托管平台配置

    一.背景说明 本人使用了多个 Git 托管平台,包括 Github.Gitlab 和 Gitee.为了避免提交信息(主要是用户名和邮箱地址)错乱,我希望在向不同的托管平台提交内容时,能够自动设置相应的 ...

  6. #ST表#CF1879F Last Man Standing

    洛谷题面 CF1879F 分析 当 \(x\) 大于最大值时一定可以被约化为等于的情况,考虑枚举 \(x\), 通过枚举倍数的方式可以知道存在若干段区间消耗同一精神状态的次数是相同的,那么区别就是其精 ...

  7. #LCT,树状数组#CF1137F Matches Are Not a Child's Play

    题目 分析 考虑从删除序列末尾来看,最大值一定在末尾, 然后与次大值之间夹了整条路径的点,降序以此类推 实际上从小到大是每个点到最大点的路径被打通的过程,由此分成若干条实链. 删除序列的位置实际上是到 ...

  8. #交互#CF1370F2 The Hidden Pair (Hard Version)

    题目 分析 考虑询问所有点可以知道两个标记点路径上的一个点, 以该点为根建树,可以二分出离该点较远的一个标记点, 再用这个标记点一次询问推出另一个,最多11次询问 代码 #include <cs ...

  9. #割点,Tarjan#洛谷 5058 [ZJOI2004]嗅探器

    题目 询问能编号最小的割点删掉后使\(a\)和\(b\)无法连通 分析 考虑将\(a\)当作根,那么割点的dfn小于等于\(b\)的dfn就可以了, 怎么会呢,如果有一个环呢,所以得要让割点的子节点小 ...

  10. OpenHarmony 3.2 Beta1版本正式发布

    5 月 31 日,开放原子开源基金会正式发布 OpenAtom OpenHarmony(以下简称"OpenHarmony")3.2 Beta1 版本.   全球开发者可通过Gite ...