Xamarin.AndroidのIntentで外部アプリを起動する

提供: MonoBook
ナビゲーションに移動 検索に移動

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);
                    }
                }
            };
        }
    }

関連項目[編集 | ソースを編集]