Xamarin.Essentials 入門 - #4 ランチャー
はじめに
Xamarin.Essentials のランチャーについて記載します。この API を利用することで、アプリケーションから URI を指定して他のアプリケーションを開くことができるようになります。なお、ブラウザーで Web サイトを開きたいときは、Xamarin.Essentials で提供される Browser API を利用します。
使ってみよう
使い方
Xamarin.Essentials のランチャーの機能は、Launcher
クラスで提供されており、以下のことができます。
コードの例は、以下のようになります。
// URI を開くことができるかどうか var supportsUri = await Launcher.CanOpenAsync("lyft://"); // URI を開く await Launcher.OpenAsync("lyft://ridetype?id=lyft_line");
読んでみよう
Launcher のコードを読んでプラットフォーム固有の処理を見ていきます。
iOS
他のアプリケーションを開くことができるかのチェック
指定した URI を開くことができるかどうかは、UIApplication.SharedApplication
を取得して UIApplication
の CanOpenUrl
を利用していることが分かります。
他のアプリケーションを開く
UIApplication.SharedApplication
を取得して、UIApplication
の OpenUrlAsync
を利用して開いていることが分かります。
ファイルを開くように要求を送る
UIDocumentInteractionController
のインスタンス生成して、現在表示されている ViewController UIDocumentInteractionController
の PresentOpenInMenu
メソッドを利用してメニューを開いています。
Android
他のアプリケーションを開くことができるかのチェック
指定した URI を開くことができるかどうかは、暗黙的 Intent を利用して、PackageManager.QueryIntentActivities
でチェックしています。
他のアプリケーションを開く
暗黙的 Intent を作成して、Activity を開始します。Context の StartActivity メソッドを呼び出して、アプリを開いていることが分かります。
ファイルを開くように要求を送る
暗黙的 Intent を作成して、Activity を開始する点は、他のアプリケーションを開く場合と同じですが、アプリチューザを表示して、ファイルを開くアプリケーションを選択できるようにしています。
UWP
他のアプリケーションを開くことができるかのチェック
指定した URI を開くことができるかどうかは、Windows.System.Launcher
クラスで URI がサポートされるかをチェックしていることが分かります(QueryAppUriSupportAsync
メソッド)
他のアプリケーションを開く
Windows.System.Launcher の LaunchUriAsync メソッドを使用して開いていることがわかります。
ファイルを開くように要求を送る
Windows.System.Launcher の LaunchFileAsync メソッドを利用していることが分かります。
まとめ
- Xamarin.Essentials のランチャーでは、以下の機能が提供される
- 内部では、以下のネイティブ固有のAPI を利用している