Xamarin.FormsからWebブラウザアプリ(Chrome,Safari)でURLを開くサンプルです。DependencyService
を利用します。
プロジェクトの作成
新規にソリューションを作成します。種類はBlank Apps (Xamarin.Forms Portable)
、名前はOpenWebBrowserSample
にします。
PCLプロジェクト
OpenWebBrowserSampleプロジェクトにインターフェースIWebBrowserService.cs
を作成します。
IWebBrowserService.cs
using System;
namespace OpenWebBrowserSample.Services
{
public interface IWebBrowserService
{
void Open(Uri uri);
}
}
iOSプロジェクト
OpenWebBrowserSample.iOSプロジェクトにWebBrowserService.cs
を作成し、OpenWebBrowserSampleプロジェクトで定義したIWebBrowserService
インターフェースを実装します。
WebBrowserService.cs
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
インターフェースを実装します。
WebBrowserService.cs
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