Xamarin.AndroidのIntentで外部アプリを起動する
ナビゲーションに移動
検索に移動
PackageManager.GetLaunchIntentForPackageメソッドで 何も考えずインテントを発行するだけでいい完璧な状態のインテントが取得できる。 アプリがインストールされていない場合はnullが返ってくる。
関連項目[編集 | ソースを編集]
この例では、
- アプリがあれば起動
- アプリがない場合はGoogle Playアプリで該当アプリのページを開く
- Google Playアプリがない場合はウェブブラウザで該当アプリのページを開く
using Android.App;
using Android.Widget;
using Android.OS;
[Activity(Label = "launch1", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
Button button = FindViewById<Button>(Resource.Id.myButton);
button.Click += (sender, e) => {
// パッケージ名はGoogle PlayのURLのidパラメーター
// https://play.google.com/store/apps/details?id=<<この部分>>
var packageName = "org.monobook.launch2";
// アプリを探す
var launchIntent = PackageManager.GetLaunchIntentForPackage(packageName);
if (launchIntent != null)
{// アプリあり
// アプリ起動
StartActivity(launchIntent);
}
else
{// アプリなし
try
{
// Google Playを開く
var marketIntent = new Android.Content.Intent(
Android.Content.Intent.ActionView,
Android.Net.Uri.Parse("market://details?id=" + packageName));
// 新しいページで開く
marketIntent.AddFlags(Android.Content.ActivityFlags.NewTask);
//
StartActivity(marketIntent);
}
catch (Android.Content.ActivityNotFoundException)
{// Google Playがない端末の場合
// ブラウザで開く
// ブラウザがない端末は見たことがない
System.Diagnostics.Debug.WriteLine("launch browser");
var browseIntent = new Android.Content.Intent(
Android.Content.Intent.ActionView,
Android.Net.Uri.Parse("http://play.google.com/store/apps/details?id=" + packageName));
// 新しいページで開く
browseIntent.AddFlags(Android.Content.ActivityFlags.NewTask);
//
StartActivity(browseIntent);
}
}
};
}
}