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