I have 2 applications ( A and B ) developed using Xamarin.Forms. I need to open app A from app B.
I have tried like below as per this thread:
In the view
var appname = @"otherappId";
var result = await DependencyService.Get<IAppHandler>().LaunchApp(appname);
Interface
public interface IAppHandler
{
Task<bool> LaunchApp(string uri);
}
Android
[Activity(Label = "OpenAppAndroid")]
public class OpenAppAndroid : Activity, IAppHandler
{
public Task<bool> LaunchApp(string uri)
{
bool result = false;
try
{
var aUri = Android.Net.Uri.Parse(uri.ToString());
var intent = new Intent(Intent.ActionView, aUri);
Xamarin.Forms.Forms.Context.StartActivity(intent);
result = true;
}
catch (ActivityNotFoundException)
{
result = false;
}
return Task.FromResult(result);
}
}
IOS
public class OpenAppiOS : IAppHandler
{
public Task<bool> LaunchApp(string uri)
{
try
{
var canOpen = UIApplication.SharedApplication.CanOpenUrl(new NSUrl(uri));
if (!canOpen)
return Task.FromResult(false);
return Task.FromResult(UIApplication.SharedApplication.OpenUrl(new NSUrl(uri)));
}
catch (Exception ex)
{
return Task.FromResult(false);
}
}
For android, I am getting
System.NullReferenceException: 'Object reference not set to an instance of an object.'
when running the project. I don't know what is app name in the code? I have tried with the package name.Also if the android app is not installed on the device, it needs to open the Play Store to download the app.
I didn't test the iOS part because Mac is not available. Is the above code work for iOS? Also if the app is not installed on the iPhone, need to open the AppStore to download the app.
Also, I like to implement the same for UWP.
Reference: https://forums.xamarin.com/discussion/92666/detect-and-open-another-app-on-device Is it possible to open another app in my app with xamarin.form?