2015-05-06 79 views
1

我想在我的应用程序启动时启动我的IBackgroundTask。WinRT - 在通用应用程序中启动/注册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 runtime error: Unspecified error WinRT information: The application is not lock-screen capable.

一个例外,其注册的一切是否正确?我在笔记本电脑上通过Visual Studio 2013运行此操作。

+0

检查是否http://stackoverflow.com/a/14258877/3956290帮助 –

回答

1

似乎因为该应用程序已经安装,未给出权限。

通过卸载应用程序并重新运行它,然后系统提示我允许/禁止后台服务运行。检查允许,现在似乎工作

相关问题