2013-11-27 31 views
0

我已經使用Visual Studio 2012開發的Metro應用,我設置的URI是這樣的:如何正確URI設置爲Metro應用開發VS2012的Windows 8.1

enter image description here

,並在其中加入在默認代碼.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 

    } 
} 

然後我打開網頁瀏覽器,我鍵入地址文本框:

e-camera:/// 

它工作正常(當應用程序正在運行的背景),但如果它是第一次打開,它崩潰 我想我需要設置一些onActivatedHandler()函數來查看應用程序是否未初始化,任何幫助,我會欣賞

回答

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

是的,它應該是你的情況args.detail.uri。我會解決它。該示例需要VS2013 :(但如果你看看代碼,邏輯應該是類似的。 – kiewic

+0

它的工作!謝謝你的解決方案! – Jesus

相關問題