2018-8-10-win10-uwp-App-to-app-communication-应用通信
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);
文件启动
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
相关文章
- nrf51822中app_button 的应用
- App 抓包提示网络异常怎么破?
- Google Earth Engine(GEE)——地球表面裸地1980-2019数据集(Bare Surfaces of the Earth APP)
- Google Earth Engine APP——在线计算Landsat 和 sentinel数据的23类植被指数的应用
- uni-app - 设置最外层容器高度为100%
- uni-app - 每次点击底部 tabBar 导航栏都触发函数(利用生命周期函数)
- 移动App性能测评与优化1.2.3 示例
- Visual Studio App Center 中的 Email 和 Webhook 通知
- uni-app 图片上传实战
- 如何实现在AGC控制台创建App Linking并在iOS端打开
- taro 与uni-app对比
- 《移动App测试的22条军规》——第23章,第5节测试微信App的用户体验
- 基于Android实现音乐APP【100010380】
- 通过apicloud实现的混合开发App的Demo
- SwiftUI macOS和iPad精品项目之天气完整App(项目含源码)
- 应用结构和行为App Structure and Behavior(SwiftUI中文文档手册)
- 如何快速的开发一个完整的iOS直播app(原理篇)
- app弹出软键盘获取键盘高度不准确的原因及导致底部定位的元素无法贴近键盘的问题
- uni-app知识点:禁止页面返回及如何实现自定义返回逻辑、实现再次返回退出应用时不退出应用而是在后台运行、uni-app ios滑动时卡顿不流畅问题解决方案
- uni-app知识点:条件编译#ifdef MP、HBuilder基座和自定义基座差别、去除顶部导航栏、手机桌面应用消息角标实现、APP应用图标配置及云端打包时的注意事项、如何使app文字内容长按可以选择复制
- 当APP应用市场结合大数据时,将是一场风暴
- 土耳其Blind ID App集成华为HMS Core虚假用户检测能力,应用100%抵御撞库攻击
- 华为应用市场AGC研习社直播:App个人信息安全保护审核标准解读
- 解决iPad“此应用不再与您共享”?求解?notability用不了 此App不再与您共享
- 应用市场快速下载以及网页端调起APP页面研究与实现
- Windows 10迎来第三方谷歌地图应用Maps App Discovery
- 超简单一行代码实现应用双开,仿照微信双开、QQ双开等实现app应用双开,即采用Android插件化开发在免安装情况下加载使用原生app
- 使用Fiddler对手机App抓包
- Meteor ToDo App实例