张高兴的 UWP 开发笔记:应用内启动应用 (UWP Launch UWP)

简介:   需求:在 A 应用内启动 B 应用,如果 B 应用未安装则跳转应用商店搜索。   启动方式使用 Uri 启动,本文使用尽可能简单,并且能拿来直接用的代码。不涉及启动后的应用数据交互,如需深入了解,请戳 MSDN:https://docs.microsoft.com/zh-cn/windows/uwp/launch-resume/launch-app-with-uri     1. 获取 B 应用 Uri 以及 B 应用激活事件   如果 B 应用已注册 Uri 的话,那很好,记住它备用,可以跳过看第2点了。

  需求:在 A 应用内启动 B 应用,如果 B 应用未安装则跳转应用商店搜索。

  启动方式使用 Uri 启动,本文使用尽可能简单,并且能拿来直接用的代码。不涉及启动后的应用数据交互,如需深入了解,请戳 MSDN:https://docs.microsoft.com/zh-cn/windows/uwp/launch-resume/launch-app-with-uri

 

  1. 获取 B 应用 Uri 以及 B 应用激活事件

  如果 B 应用已注册 Uri 的话,那很好,记住它备用,可以跳过看第2点了。如果没有,接着看下面。

  那么如何为 B 应用注册 Uri 呢?

  打开 B 应用程序清单 Package.appxmanifest ,在“声明”选卡项中添加一个新的“协议”声明(如果你做过后台任务的话那一定很熟悉)。在“名称”(name)那一栏中填写你需要注册的 Uri (随便编)。填写完成后保存,这样就完成了 Uri 的注册。

  Uri 启动应用是以激活的形式启动的应用,和磁贴与Toast通知的激活启动一样,需要在 App.xaml.cs 文件里重写 OnActivated() 事件。Uri 激活时会赋一个 ID,在 OnActivated() 事件中可以进行一些处理,比如跳转其他不同页面,下面的代码是像 OnLaunched() 事件一样直接跳转到 MainPage.xaml。

protected override void OnActivated(IActivatedEventArgs args)
{
    Frame rootFrame = Window.Current.Content as Frame;

    if (rootFrame == null)
    {
        rootFrame = new Frame();

        rootFrame.NavigationFailed += OnNavigationFailed;

        Window.Current.Content = rootFrame;
    }

    rootFrame.Navigate(typeof(MainPage));

    Window.Current.Activate();
}

 

  2. A 应用启动 B 应用

  知道了 B 应用的 Uri 后,下面就要在 A 应用中启动 B 应用了。和 MSDN 的“推荐设置”方法不同,这里采用的是先判断 B 应用在设备上存不存在,如果存在直接启动,不存在启动商店搜索。下面直接给出代码,注意把 Uri 换成相应的 Uri 即可。 Uri 内的 ProductID 是一定要写的,不然会报错。

var result = await Windows.System.Launcher.QueryUriSupportAsync(new Uri("link.qtz:?ProductId=1"), Windows.System.LaunchQuerySupportType.Uri);

if (result == LaunchQuerySupportStatus.Available)
{
    await Windows.System.Launcher.LaunchUriAsync(new Uri("link.qtz:?ProductId=1"));
}
else
{
    await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-windows-store://pdp/?productid=9nblggh4t3t0"));
}

 

目录
相关文章
|
7月前
使用 UI5 Tools 这款 Visual Studio Code 扩展来管理和运行本地 SAP UI5 应用试读版
使用 UI5 Tools 这款 Visual Studio Code 扩展来管理和运行本地 SAP UI5 应用试读版
39 0
在Xamarin开发中,UWP环境下无法进入断点调试standard库的问题解决方案
在Xamarin开发中,UWP环境下无法进入断点调试standard库的问题解决方案
66 0
|
XML C# 数据格式
Wix 安装部署教程(九) --用WPF做安装界面
原文:Wix 安装部署教程(九) --用WPF做安装界面       经常安装PC端的应用,特别是重装系统之后,大致分为两类。一类像QQ,搜狗输入法这样的。分三步走的:第一个页面可以自定义安装路径和软件许可。
1570 0
|
图形学
Unity教程:GUI 界面开发
UI概述: UI永远是显示在屏幕的最前面上,不受变形、碰撞、光照的影响GUI概述:GUI是Graphical User Interface的缩写。Unity的图形界面系统能容易和快速创建出各种交互界面。
2286 0
|
开发工具 git
(2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
原文:(2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
917 0
|
XML 物联网 开发工具
(1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
原文:(1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
1233 0
|
C#
Wix 安装部署教程(十) --来,用WPF做个漂亮的安装界面
原文:Wix 安装部署教程(十) --来,用WPF做个漂亮的安装界面        在上一篇中曾留下两个问题,.Net捆绑安装不触发以及路径选择的问题现在都已经解决,这段时间花的最多的地方还是WPF调样式上面,奈何WPF功力不够,暂时还是没有达到自己想要的效果。
1531 0
|
API C# Windows
起调UWP的几种方法
原文:起调UWP的几种方法 由于种种原因吧,我需要使用一个WPF程序起调一个UWP程序,下面总结一下,给自己个备份。 启动UWP程序的关键是协议启动 给我们的UWP应用添加一个协议,like this: 然后使用协议启动该UWP有一下几种方式: 1.
990 0
|
Windows 数据格式 XML
UWP: 通过命令行启动 UWP 应用
原文:UWP: 通过命令行启动 UWP 应用 最近在开发应用的过程中,我遇到了如标题所述的需求,其实主要是为了能够快捷启动应用,正像我们可以在“运行”对话框中可以输入一些可执行程序的名称后,就能够直接启动它;这样做,可以增加 App 的易用性。
2300 0

热门文章

最新文章