概要
アプリケーションからブラウザアプリ(標準のIE Mobile)を起動することが出来ます。
ブラウザアプリ起動時の表示ページを指定するURLプロパティが、Windows Phone OS 7.1からは非推奨となりました。代わりにUriプロパティが追加されており、非推奨プロパティが今後いつ削除されてしまうのか判らないため、OS 7.1以降で使うアプリにはURLプロパティは使用しないほうが良いでしょう。
前述したURLプロパティが非推奨となった影響で、Windows Phone OS 7.0時代に使えた「WebBrowserTaskを使ってYouTubeアプリを起動する」や「WebBrowserTaskを使って位置座標を設定した標準マップアプリを起動する」と言った裏技に近いハックは使用できなくなっています。
名前空間:Microsoft.Phone.Tasks
System.Object
+--Microsoft.Phone.Tasks.WebBrowserTask
Tips
IE Mobileを連携起動させてウェブサイトを閲覧する
アプリ内でWebBrowserコントロールを使う方法もありますが、やはり表示領域の小さいコントロールを使うよりもIEの方が閲覧しやすいです。アプリからIEを起動させる事が出来ます。
Microsoft.Phone.Tasks名前空間のCameraCaptureTaskクラスを使用します。WebBrowserの表示には、 Showメソッドを使用します。
var url = string.Format( "http://www.google.co.jp/m/directions?dirflg=r&saddr={0}&daddr={1}", Uri.EscapeUriString("大阪"), Uri.EscapeUriString("東京")); var task = new Microsoft.Phone.Tasks.WebBrowserTask(); task.URL = Uri.EscapeDataString (url); task.Show();
上記のコードを実行してみました。
WebBrowserTaskへ「http://example.com/?hoge=hoge&piyo=piyo
」という文字列をURLプロパティへ設定すると、パラメータのpiyoの部分が除去されてしまいます。これはURLプロパティへ設定時にURLデコードが行われているからだと思われています。
Windows Phone エミュレータがBeta版だった時には、上記のURLプロパティにはURL文字列をそのままの形で渡せたのですが、RTW版の時点で修正がかかり、Uri.EscapeDataStringメソッドでエスケープしたURL文字列を渡さないといけないようになりました。
MSDNフォーラムでこの現象はバグだ(要出典)との回答があったため、修正が待たれていましたが、WebBrowserTask.URLプロパティのページにて注釈が追加されました。
Windows Phone OS 7.1での修正点(Uriプロパティの追加)
ブラウザアプリ起動時の表示ページを指定するURLプロパティが、Windows Phone OS 7.1からは非推奨となりました。
代わりにUriプロパティが追加されており、非推奨プロパティが今後いつ削除されてしまうのか判らないため、OS 7.1以降で使うアプリにはURLプロパティは使用しないほうが良いでしょう。
Windows Phone OS 7.1用にサンプルコードを書き換えておきます。
var url = string.Format("http://www.google.co.jp/m/directions?dirflg=r&saddr={0}&daddr={1}", Uri.EscapeUriString("大阪"), Uri.EscapeUriString("東京")); var task = new Microsoft.Phone.Tasks.WebBrowserTask(); task.Uri = new Uri(url); task.Show();
実行結果は、Windows Phone OS 7.0の時と同じです。