酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows PhoneでWebBrowserTaskを使ってWebサイトをIEで見る

概要

アプリケーションからブラウザアプリ(標準のIE Mobile)を起動することが出来ます。

f:id:ch3cooh393:20150830174535j:plain

ブラウザアプリ起動時の表示ページを指定する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();

上記のコードを実行してみました。

f:id:ch3cooh393:20150830174605p:plain

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からは非推奨となりました。

f:id:ch3cooh393:20150830174637p:plain

代わりに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の時と同じです。

関連記事

blog.ch3cooh.jp