Windows Phone - 使用URI開啟WP設定程式
<Windows Phone 8 - App2App Communication - Protocol (URI Schema)>與<Windows Phone 8 - App2App Communication - File associations>
這二篇提及到很多透過URI的方式進行交互,來取得檔案或是開啟特定的應用程式。另外,使用StorageFolder/StorageFile的API時,
也常看到「ms-appx:///」與「ms-appdata:///」這種特定的URI格式,這些URI的應用在Windows 8也很常見。
因此,本篇主要依據<URI schemes for launching built-in apps for Windows Phone 8>介紹的內容,加以說明WP8可透過那些內鍵的URI
開啟系統中的應用程式,這與過去在<Windows Phone 7 - 更多元的Microsoft.Phone.Tasks>使用的Tasks是有所不同的,不會像有的Tasks
會有Return Data,往下來加以看看吧。
〉Windows.System.Launcher.LaunchUriAsync:
要透過URI Schema啟動build-in apps,需要先了解一個重要的API:LaunchUriAsync。主要提供二個方法:
方法 | 說明 |
LaunchUriAsync(Uri) | 啟動默認該URI Schema的特定應用程式。 |
LaunchUriAsync(Uri, LauncherOptions) | 啟動默認該URI Schema的特定應用程式,並且指定LauncherOptions。 |
就這二個方法了,非常容易吧,至於LauncherOptions裡面有內藏很多特別的屬性,例如:ContentType很適合file association中使用…等,詳細的說明
可點擊該名稱的連結進行閱讀。
簡單舉個例子來看一下如何使用:LauchUriAsync:
1: // 啟動藍芽連線管理程式
2: Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings-bluetooth:"));
接下來了解有多少特別的URI Schema可以使用:
URI Schema
|
說明 |
http:[URL] |
開啟Web browser,並且指定導向的URL。 |
mailto:[email address] |
開啟email應用程式,並且建立一個新的訊息,指定對應的email address。
需注意該方法不是直接發送,而是要用戶手動點擊發送。 |
ms-settings-accounts: |
開啟帳號設定應用程式。 |
ms-settings-airplanemode: |
開啟Airplane設定應用程式。 |
ms-settings-bluetooth: |
開啟Bluetooth設定應用程式。 |
ms-settings-cellular: |
開啟Cellular設定應用程式。 |
ms-settings-emailandaccounts: |
開啟電子郵件與帳號設定應用程式。 |
ms-settings-location: |
開啟Location Service設定應用程式。 |
ms-settings-lock: |
開啟Lock Screen設定應用程式。 |
ms-settings-wifi: |
開啟Wi-Fi設定應用程式。 |
zune:navigate?appid=[app ID] |
開啟Store(或稱Marketplace),開啟該定應用程式的詳細說明畫面。 |
zune:reviewapp |
開啟Store(或稱Marketplace),進入呼叫該URI Schema的應用程式的Review畫面。
|
zune:reviewapp?appid=app[app ID] |
開啟Store(或稱Marketplace),進入指定應用程式ID的Review畫面。
需注意使用 app參數需要指定一個特定的應用程式ID。例如: zune:reviewapp?appid=appfdf05477-814e-41d4-86cd-25d5a50ab2d8。 |
zune:search?keyword=[search keyword]&publisher=[publisher name]&contenttype=app |
開啟Store(或稱Marketplace),搜尋指定的內容。
keyword、publisher、contenttype參數可選擇性使用。 需注意contenttype=app只限制搜尋到的應用程式,如果省略該參數,可搜尋到更多。 |
zune:search?keyword=[search keyword]&contenttype=app |
開啟Store(或稱Marketplace),搜尋應用程式的關鍵字(Keywords)。 |
zune:search?publisher=[publisher name] |
開啟Store(或稱Marketplace),搜尋指定的程式發版者名稱(Publisher name)。 |
以上是目前Windows Phone 8提供操作的URI Schema,看文字比較沒有感覺吧,透過下方的範例程式來實際玩看看吧。
[範例程式]
[補充]
1. 由於在WP 7.1/7.8之下,如果用戶沒有開啟Location Service時,在使用GeoCoordinateWatcher.Start會出錯,該怎麼辦?
建議在使用GeoCoordinateWatcher.Start之前,先透過GeoCoordinateWatcher.TryStart()來取得return是否為true再進行,如下程式範例:
1: private void CheckLocation()
2: {
3: GeoCoordinateWatcher tWatcher = new GeoCoordinateWatcher();
4: tWatcher.PositionChanged +=
5: new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(tWatcher_PositionChanged);
6: tWatcher.StatusChanged +=
7: new EventHandler<GeoPositionStatusChangedEventArgs>(tWatcher_StatusChanged);
8:
9: // 識別是否有開啟Locaiton Service
10: if (tWatcher.TryStart(true, new TimeSpan()) == false)
11: MessageBox.Show("未啟動Location Service,請至「設定/位置」開啟 位置服務!",
12: "Tip", MessageBoxButton.OK);
13: }
14:
15: void tWatcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
16: {
17: GeoPositionStatus tStatus = e.Status;
18: MessageBox.Show(tStatus.ToString());
19: }
20:
21: void tWatcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
22: {
23: }
======
以上是分享透過URI啟動系統中應用程式的說明,做為自己開發上的一些筆記,另外,補充一些過去與現在差別的部分,希望對大家有所幫助。
謝謝。
References:
‧URI schemes for launching built-in apps for Windows Phone 8
‧How to launch the default app for a URI (Windows Store apps using C#/VB/C++ and XAML) (Windows)
‧Guidelines and checklist for file types and URIs (Windows Store apps) (Windows)
‧Exercise 3: Using the Location Device and Bing Maps
‧Using the Location Service in Silverlight for Windows Phone