如何正确设置开发VS2012 Windows 8.1的Metro App的URI

时间:2013-11-27 20:02:11

标签: visual-studio-2012 microsoft-metro uri windows-8.1

我有一个使用Visual Studio 2012开发的城域应用程序,我这样设置了URI:

enter image description here

这是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:///

它运行良好(当应用程序运行后台时),但如果它是第一次打开,它会崩溃 我想我需要在onActivatedHandler()函数上设置一些东西来查看应用程序是否未初始化,任何帮助我都会感激

1 个答案:

答案 0 :(得分:1)

只需查看Association Launching Sample,您似乎只处理可启动应用的三种可能情况之一,即您正在处理:

  • Windows.ApplicationModel.Activation.ActivationKind.launch

但不处理:

  • Windows.ApplicationModel.Activation.ActivationKind.protocol < - 你需要这个。
  • Windows.ApplicationModel.Activation.ActivationKind.file

试试这个:

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));
    }
};