프로그래밍/Xamarin(자마린)
[Xamarin] How to open another app.
그래도동
2021. 12. 22. 10:44
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
반응형