본문 바로가기
프로그래밍/Xamarin(자마린)

[Xamarin] How to open another app with data

by 그래도동 2021. 12. 22.
728x90
반응형

 

Xamarin] How to open another app.

 

[Xamarin] How to open another app.

How to open another app in Xamarin. Use PackageManager in ~.Android project [assembly: Xamarin.Forms.Dependency(typeof(AppLinkService))] namespace MyApp.Droid.Service { public class AppLinkService :..

something-is-code.tistory.com

 

[assembly: Xamarin.Forms.Dependency(typeof(AppLinkService))]
namespace MyApp.Droid.Service
{
    public class AppLinkService : IServiceAppLink
    {
        public Task<bool> LaunchApp(string packageName)
        {
            bool result = false;

            try
            {
                PackageManager pm = Android.App.Application.Context.PackageManager;
                var activity = Xamarin.Essentials.Platform.CurrentActivity as MainActivity;
                if (activity == null) return null;

                if (IsAppInstalled(packageName))
                {
                    Intent intent = pm.GetLaunchIntentForPackage(packageName);
                    if (intent != null)
                    {
                        intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.ClearTask | ActivityFlags.NewTask);
                        intent.PutExtra("key", "data");
                        activity.StartActivity(intent);
                    }
                }
                else
                {
                    // 다운로드?
                }
            }
            catch (ActivityNotFoundException)
            {
                result = false;
            }

            return Task.FromResult(result);
        }


        private bool IsAppInstalled(string packageName)
        {
            PackageManager pm = Android.App.Application.Context.PackageManager;
            bool installed = false;
            try
            {
              pm.GetPackageInfo(packageName, PackageInfoFlags.Activities);
              installed = true;
            }
            catch (PackageManager.NameNotFoundException e)
            {
              installed = false;
            }

            return installed;
        }
    }
}

 

Add

intent.PutExtra("key", "data");

 

 

 

in OnCreate() in MainActivity.cs

 

 if (Intent.HasExtra("bgf"))
 {
    var data = Intent.GetStringExtra("key");
    if (data != null)
    {
   	 Log.WriteLine(LogPriority.Debug, "Recv Data", data);
    }
}

 

GetData (put in key)

Intent.GetStringExtra("key");

 

 

 

728x90
반응형

댓글