Visual studio 2012 如何为VS2012 Windows 8.1开发的Metro应用程序正确设置URI

Visual studio 2012 如何为VS2012 Windows 8.1开发的Metro应用程序正确设置URI,visual-studio-2012,microsoft-metro,uri,windows-8.1,Visual Studio 2012,Microsoft Metro,Uri,Windows 8.1,我有一个使用Visual Studio 2012开发的metro应用程序,我通过以下方式设置URI: 这是在default.js中添加的代码 app.onactivated = function (args) { if (args.detail.kind === activation.ActivationKind.launch) { if (args.detail.previousExecutionState !== activation.ApplicationExec

我有一个使用Visual Studio 2012开发的metro应用程序,我通过以下方式设置URI:

这是在default.js中添加的代码

app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
         } else {
         }


        //Handles URI activation
        WinJS.Application.addEventListener("activated", onActivatedHandler, false);

        args.setPromise(WinJS.UI.processAll().then(init));
    }
};




function onActivatedHandler(eventArgs) {
    if (eventArgs.detail.kind == Windows.ApplicationModel.Activation.ActivationKind.protocol) {
        // TODO: Handle URI activation.


        // The received URI is eventArgs.detail.uri.rawUri

    }
}
然后我打开我的webBrowser并在地址文本字段中键入:

e-camera:///
它工作良好(当应用程序运行后台时),但如果它是第一次打开,它会崩溃 我想我需要在activatedHandler()函数上设置一些内容,以查看应用程序是否未初始化,如果有任何帮助,我将不胜感激

  • Windows.ApplicationModel.Activation.ActivationKind.launch
但不处理:


  • Windows.ApplicationModel.Activation.ActivationKind.protocol是的,在您的案例中应该是args.detail.uri。我会修好的。该示例需要VS2013:(但如果查看代码,逻辑应该类似。
    app.onactivated = function (args) {
        if (args.detail.kind === activation.ActivationKind.launch) {
            // ...
        }
        else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.protocol) {
            // Receives URI
            var arg = args.detail.uri;
    
            // Handles URI activation
            WinJS.Application.addEventListener("activated", onActivatedHandler, false);
            args.setPromise(WinJS.UI.processAll().then(init));
        }
    };