frendguo's blog

UWA启动的那些事(Automate launching Windows 10 UWP app)

注: 本文参考自: https://docs.microsoft.com/en-us/windows/uwp/xbox-apps/automate-launching-uwp-apps

UWA(Universal Windows Application)主要有以下两种启动方式:

  1. 运行激活(Launch Activation) : 也就是我们平常点击的启动, 没什么好说的, 具体的可以看上述的文档
  2. 协议激活(Protocol Activation): 一种看起来比较高大上的启动方法. 官方文档说的是允许应用根据协议将自己注册成为处理函数.

这里主要讲后者, 也就是协议激活. 首先按照文档来一步一步操作, 这里就搬过来了

  1. Open the Package.appxmanifest file in Visual Studio.
  2. Select the Declarations tab. // 声明
  3. Under the Available Declarations drop-down, select Protocol, and then select Add.
  4. Under Properties, in the Name field, enter a unique name to launch the app. // 名字可以自定义, 不过只能为小写字母和数字

    Protocol activation

  5. Save the file and deploy the project. // 保存并部署, 一定要部署

  6. After the project has been deployed, the protocol activation should be set.
  7. Go to Control Panel\All Control Panel Items\Default Programs and select Associate a file type or protocol with a specific program. Scroll to the Protocols section to see if the protocol is listed. // 这步就是去看看有木有这个协议, 可选的. 不过建议还是去看看, 可能会发现新大陆哦~

到这里, 配置算是初步完成了, 我们有两种方式能够来开启这个应用

  1. 命令行方式: 也就是在CMD窗口或者win+R 的方式来开启
  2. 启动器应用程序(Launcher application): 就是要通过编写一个WinRT的应用程序来启动这个APP, 有需要的同学可以尝试下~

试着在CMD中输入(任意一行, 三行的区别主要在于参数不同):  记得写冒号!!!

>start myapplication:
>start myapplication:protocol-parameter
>start myapplication://single-player/level3?godmode=1&ammo=200

也可以在win+R的运行模式下输入: 记得写冒号!!!

myapplication:
myapplication:protocol-parameter
myapplication://single-player/level3?godmode=1&ammo=200

好啦, 到这一步, 有木有发现程序是启动了, 就是一直卡在了启动页面了!!

一直没有要进去的意思, 这里主要的原因就是, 你只是指定了操作系统帮你打开这个应用, 还没说要干嘛, 所以它就一直这样等着

于是就开始翻文档, 发现了一枚 OnActivated(IActivatedEventArgs) 

于是, 就开始重写 OnActivated(IActivatedEventArgs) , 以下是接受参数, 之后导航到指定页面(这里是MainPage)

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

    if (rootFrame == null)
    {
        rootFrame = new Frame();
        Window.Current.Content = rootFrame;
    }

    ProtocolActivatedEventArgs prtlArgs = (ProtocolActivatedEventArgs)args;
    rootFrame.Navigate(typeof(MainPage), prtlArgs);
    Window.Current.Activate();
}

再次通过协议激活的方法打开, 就可以跟正常打开一样正常运行啦~~

Happy Coding!o(* ̄▽ ̄*)o

Add comment

Loading