Windows Phone - 使用URI開啟WP設定程式

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

 

Dotblogs Tags: