需要被其他應用啟動的第三方應用需要註冊protocol association,當一個應用程式啟動一個特殊的URI的時候,那麼註冊了這個protocol的程式會自動啟動,並且可以通過這個特殊的URI將參數傳遞到第三方應用中。
第三方應用程式註冊protocol association步驟
Windows Phone 8 和 Windows 8 註冊方式有一些差異,下面分別說明註冊方式。
Windows Phone 8第三方應用程式註冊Protocol
1.修改WPAppManifest.xaml檔案
在</Token>後面添加類似如下代碼:
1 <Extensions>
2 <Protocol Name="testapp" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" />
3 </Extensions>
Protocol 元素是 Extensions 元素的子項目,始終應該跟在所有 FileTypeAssociation 元素後面。Protocol 元素說明了應用註冊的 URI 方案名稱,使其可以在另一個應用啟動某個特定 URI 時啟動。
2.添加URI請求解析處理常式
傳人程式的UIR格式為:/Protocol?encodedLaunchUri={傳人的URI},為了使程式能夠正確解析傳人的URI,需要為工程添加AssociationUriMapper類,代碼如下:
/// <summary> /// 解析第三方應用調用參數 /// </summary> class AssociationUriMapper : UriMapperBase { private string tempUri; public override Uri MapUri(Uri uri) { tempUri = uri.ToString(); // Protocol association launch for contoso. if (tempUri.Contains("/Protocol")) { int pos = tempUri.IndexOf("encodedLaunchUri"); String encodedString = tempUri; if (pos >= 0) { encodedString = tempUri.Substring(pos); } return new Uri("/MainPage.xaml?" + encodedString, UriKind.Relative); } // Include the original URI with the mapping to the main page. return new Uri("/MainPage.xaml", UriKind.Relative); } }