我按照这篇文章在系统重启时启动我的UWP应用程序。
更新
我也试过那篇文章,在该样本Configure your app to start at log-in中使用了完全源代码
以下是现象:
- 当我在UWP应用程序的主页面上单击“请求启用启动”按钮时,它会将“启动状态”显示为“已启用”。
- 我检查了任务管理器,这个应用程序在启动列表中启用
- 重新启动PC并登录后,此应用程序立即启动并最小化到任务栏
- 当我点击任务栏上的应用程序图标时,该应用程序仅显示启动画面
- 我离开应用程序几分钟,它突然关闭,没有任何通知
我可以将我的应用程序注册到启动列表,但在我登录后,我的应用程序不会自动启动作为我的意图。它总是如下图
有人有同样的问题吗?我真的需要一些帮助。感谢。
答案 0 :(得分:1)
从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博客中使用启动任务扩展,则需要将Executable
和EntryPoint
属性修改为等于应用程序的EntryPoint
属性。请注意,请避免在$targetnametoken$.exe
中使用Extension
通配符。
<Extensions>
<uap5:Extension
Category="windows.startupTask"
Executable="StartUpTest.exe"
EntryPoint="StartUpTest.App">
<uap5:StartupTask
TaskId="MyStartupId"
Enabled="false"
DisplayName="Test startup" />
</uap5:Extension>
</Extensions>
答案 1 :(得分:1)
如果你的应用程序停留在启动状态,这通常意味着你的代码没有调用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();
}