I Windows Phone 8 kan man starta en annan app genom att använda speciella länkar. (URI schema name) I en länk är detta som kommer först innan “:”. Ex. contoso:ShowProduct?ID=12
Man måste registrera sin app för att detta skall fungera. Detta gör man i WMAppManifest.xml under taggen Extensions.
<Extensions> <Protocol Name="trafikofon" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" /> </Extensions>
Här ser vi hur Trafikofon har registrerat ett namn.
Skapa sedan en klass som visar rätt sida när appen startas på det här sättet.
class UriMapper : UriMapperBase { private string tempUri; public override Uri MapUri(Uri uri) { tempUri = HttpUtility.UrlDecode(uri.ToString()); if (tempUri.Contains("trafikofon:")) { // överför querystring om vi har något return new Uri("/MainPage.xaml", UriKind.Relative); } else { return uri; } } }
Registrera denna klass för appen. Det kan göras i App.xaml.cs i dess metod InitializePhoneApplication.
private void InitializePhoneApplication() { if (phoneApplicationInitialized) return; // Create the frame but don't set it as RootVisual yet; this allows the splash // screen to remain active until the application is ready to render. RootFrame = new PhoneApplicationFrame(); RootFrame.Navigated += CompleteInitializePhoneApplication; RootFrame.UriMapper = new UriMapper(); ... }
För att testa detta så kan man skapa en annan app som endast innehåller en knapp där koden för dess klickhändelse är:
private void Button_Click_1(object sender, RoutedEventArgs e) { Launcher.LaunchUriAsync(new System.Uri("trafikofon:nothing")); }
Kommer detta fungera på WP 7.8?
Posted by: Johan Thor | 2012-12-19 at 11.59
Tyvärr har jag ingen information om detta i dagsläget.
/dag
Posted by: Dag | 2012-12-19 at 12.35