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

[Xamarin] How to open another app.

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

 

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

[assembly: Xamarin.Forms.Dependency(typeof(AppLinkService))]

Intent intent = pm.GetLaunchIntentForPackage(packageName);

activity.StartActivity(intent);

 

* Remember Interface => IServiceAppLink

 

Use Interface 

in C# project

namespace MyApp.Interface
{
    public interface IServiceAppLink
    {
        Task<bool> LaunchApp(string packageName);
    }
}

 

 

How to call

in C# project

Button_Click(object sender, EvenctArg e)
{
    Xamarin.Forms.DependencyService.Get<Interface.IServiceAppLink>().LaunchApp("Write Your AnotherApp Package Name");
}

 

 

 

Ref.

android - Xamarin Forms: How to open an app from another app? - Stack Overflow

728x90
반응형

댓글