我想在我的应用程序启动时启动我的IBackgroundTask。
我已将我的任务添加到.appxmanifest.xml文件中,我的扩展标记现在看起来像这样
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="CordovaApp.Library.UploadTask">
<BackgroundTasks>
<Task Type="systemEvent" />
<Task Type="timer" />
</BackgroundTasks>
</Extension>
</Extensions>
我的IBackgroundTask类被称为UploadTask,并保存在另一个项目中,该项目的outtype设置为Windows运行时组件。
以下是代码的缩减版本,因此您可以看到名称空间等
namespace CordovaApp.Library
{
public sealed class UploadTask : IBackgroundTask
{
public async void Run(IBackgroundTaskInstance taskInstance)
{
var connectionProfile = NetworkInformation.GetInternetConnectionProfile();
// connectionProfile can be null (e.g. airplane mode)
if (connectionProfile != null && connectionProfile.IsWlanConnectionProfile)
{
// custom code here
}
}
}
}
我已将此项目的引用添加到我的通用运行时组件项目中。
一切都很好。
现在启动应用程序,我想我必须使用WinJs,所以我有以下代码。
var uploadTaskName = 'UploadTask';
var tasks = Windows.ApplicationModel.Background.BackgroundTaskRegistration.allTasks;
var uploadTaskFound = false;
for (var i = 0; i < tasks.length; i++) {
if (tasks[i].Value.name == uploadTaskName) {
successCallback();
return;
}
}
Windows.ApplicationModel.Background.BackgroundExecutionManager.requestAccessAsync().then(function() {
var builder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
builder.name = "Upload Task";
builder.taskEntryPoint = "CordovaApp.Library.UploadTask";
builder.setTrigger(new Windows.ApplicationModel.Background.TimeTrigger(15, false));
return builder.register();
}).done(function () {
successCallback();
}, function(err) {
errorCallback(err);
});
现在requestAccessAsync方法总是抛出
的异常0x80004005 - JavaScript运行时错误:未指定错误 WinRT信息:该应用程序不具备锁屏功能。
是否正确注册了所有内容?我通过笔记本电脑上的Visual Studio 2013运行它。
答案 0 :(得分:1)
似乎因为已经安装了应用程序,所以没有给出权限。
通过卸载应用程序并重新运行它,我被提示允许/禁止后台服务运行。检查允许,现在似乎工作