這曾是在WP7中幾乎不可能的任務,每個APP都在獨立的沙箱中,在WP8 變成可能@@
因公司某專案的需求是,APP去啟動另一個APP,iOS跟Android可以,但WP就是不行Orz,後來在假日的這兩天,發現WP7不行,但是WP8可以,參考了很多資料並嘗試許多次,最後終於成功研究出來。
接下來進入主題,APP啟動APP,有分為來源端(呼叫端Source)與目的端(被呼叫端Target),
1.首先必須到Target中的WMAppManifest.xml設定
2.(Target端)必須在</Tokens>底下插入<Extensions>與</Extensions>,然後Protocol Name是可以自行決定,但是有一些限制,必須是2~39英數字、全部小寫
3.(Target端)在方案總管新增AssociationUriMapper.cs,繼承UriMapperBase,覆寫MapUri,HttpUtility.UrlDecode進行解碼得到tempUri,然後如果包含phoneapp123表示是另一個APP進行呼叫,可以做相對應的處理,如果都不是則是正常的APP啟動
4.(Target端)在App.xaml.cs的private void InitializePhoneApplication()函式中加入RootFrame.UriMapper = new AssociationUriMapper();,讓APP可以監聽被呼叫的事件
5.接下來在Source端,使用Button呼叫在函式中加入一個async(經測試,不加也可以),以Launcher.LaunchUriAsync(new Uri("剛定義的名稱:參數"));
參考資料:
http://www.cnblogs.com/sonic1abc/archive/2012/12/11/2811636.html
http://blog.csdn.net/l_serein/article/details/8717089
http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206987(v=vs.105).aspx