Xamarin.Forms から Webブラウザで開く
Xamarin.FormsからWebブラウザアプリ(Chrome,Safari)でURLを開くサンプルです。DependencyServiceを利用します。
プロジェクトの作成
新規にソリューションを作成します。種類はBlank Apps (Xamarin.Forms Portable)、名前はOpenWebBrowserSampleにします。
PCLプロジェクト
OpenWebBrowserSampleプロジェクトにインターフェースIWebBrowserService.csを作成します。
using System; namespace OpenWebBrowserSample.Services { public interface IWebBrowserService { void Open(Uri uri); } }
iOSプロジェクト
OpenWebBrowserSample.iOSプロジェクトにWebBrowserService.csを作成し、OpenWebBrowserSampleプロジェクトで定義したIWebBrowserServiceインターフェースを実装します。
using System; using OpenWebBrowserSample.iOS; using Xamarin.Forms; using MonoTouch.UIKit; [assembly: Dependency(typeof(WebBrowserService))] namespace OpenWebBrowserSample.iOS { public class WebBrowserService : IWebBrowserService { public void Open(Uri uri) { UIApplication.SharedApplication.OpenUrl (uri); } } }
Androidプロジェクト
OpenWebBrowserSample.Androidプロジェクトも同様にWebBrowserService.csを作成し、OpenWebBrowserSampleプロジェクトで定義したIWebBrowserServiceインターフェースを実装します。
using System; using Android.Content; using OpenWebBrowserSample.Android; using Xamarin.Forms; [assembly: Dependency(typeof(WebBrowserService))] namespace OpenWebBrowserSample.Android { public class WebBrowserService : IWebBrowserService { public void Open (Uri uri) { Forms.Context.StartActivity ( new Intent (Intent.ActionView, global::Android.Net.Uri.Parse(uri.AbsoluteUri) )); } } }
Forms.Contextからコンテキストを取得してStartActivityメソッドを実行します。インテントに含めるUriはAndroid.Net.Uri型に変換する必要があります。
使用例
var uri = "http://xamarin.com/"; DependencyService.Get<IWebBrowserService> ().Open(new Uri(uri)); // open in WebBrowser