UWP_Can 未使用 StartupTask 启动应用程序 Class?

UWP_Can not start app using StartupTask Class?

我按照这篇文章在系统重启时启动我的 UWP 应用程序。

https://docs.microsoft.com/en-us/uwp/api/windows.applicationmodel.startuptask#uwp-app-startup-task-extension

更新
我也试过那篇文章,在那个例子中使用了源代码 Configure your app to start at log-in
以下是现象:
- 当我单击 UWP 应用主页上的请求启用启动按钮时,它显示启动状态为已启用。
- 我检查任务管理器,这个应用程序在启动列表中启用。
- 在我重新启动 PC 并登录后,此应用程序启动并立即最小化到任务栏。
- 当我点击任务栏上的应用程序图标时,应用程序只显示启动画面。
- 我以这种方式离开应用程序几分钟,它突然关闭,没有任何通知。
我可以将我的应用程序注册到启动列表,但在我登录后,我的应用程序不会按照我的意图自动启动。总是像下图
有人有同样的问题吗?我真的需要一些帮助。谢谢。

official document起,UWP App启动任务扩展为

<Package xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" ...>
...
<Applications>
    <Application ...>
        ...
        <Extensions>
          <uap5:Extension Category="windows.startupTask">
            <uap5:StartupTask
              TaskId="MyStartupId"
              Enabled="false"
              DisplayName="Test startup" />
          </uap5:Extension>
      </Extensions>
    </Application>
</Applications>

您可以直接复制到您应用的 Package.appxmanifest。它在我身边有效。请注意,当您的应用程序在启动时启动时,它将在任务栏中最小化。

如果您使用Configure your app to start at log-in博客中的启动任务扩展,您需要修改ExecutableEntryPoint 属性等于应用程序的EntryPoint 属性。注意,避免在 Extension.

中使用 $targetnametoken$.exe 通配符
<Extensions>
  <uap5:Extension
    Category="windows.startupTask"
    Executable="StartUpTest.exe"
    EntryPoint="StartUpTest.App">
    <uap5:StartupTask
      TaskId="MyStartupId"
      Enabled="false"
      DisplayName="Test startup" />
  </uap5:Extension>
</Extensions>

如果您的应用卡在初始位置,这通常意味着您的代码没有调用 Window.Activate()。

确保按如下方式为 ActivationKind.StartupTask 实现 OnActivate():

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

    string payload = string.Empty;
    if (args.Kind == ActivationKind.StartupTask)
    { 
        var startupArgs = args as StartupTaskActivatedEventArgs;
        payload = ActivationKind.StartupTask.ToString();
    }

    rootFrame.Navigate(typeof(MainPage), payload);
    Window.Current.Activate();
}