如何用Xamarin表单中的按钮打开安装在我手机上的Slack应用程序?

如何用Xamarin表单中的按钮打开安装在我手机上的Slack应用程序?,xamarin,xamarin.forms,slack-api,Xamarin,Xamarin.forms,Slack Api,我需要通过在Xamarin表单中创建的按钮打开安装在手机上的Slack应用程序。 我拥有的是在共享项目中创建的界面和“主页”中按钮的单击事件。 后来,我在project.android中创建了一个类,该类进行依赖项注入,以创建一个实现,通过“Intent”打开特定的应用程序 ///Interface 卡沙马林 { 公共接口IOpenAppService { 任务启动(字符串stringUri); } } /////主页上按钮的事件单击 卡沙马林 { 公共部分类主页:ContentPage { 已

我需要通过在Xamarin表单中创建的按钮打开安装在手机上的Slack应用程序。 我拥有的是在共享项目中创建的界面和“主页”中按钮的单击事件。 后来,我在project.android中创建了一个类,该类进行依赖项注入,以创建一个实现,通过“Intent”打开特定的应用程序

///Interface
卡沙马林
{
公共接口IOpenAppService
{
任务启动(字符串stringUri);
}
}
/////主页上按钮的事件单击
卡沙马林
{
公共部分类主页:ContentPage
{
已单击无效句柄(对象发送者,System.EventArgs e)
{
DependencyService.Get().Launch(“slack”);
//DependencyService.Get().Launch(“com.whatsapp”);
}
公共主页()
{
初始化组件();
}
}
}
/////在project.android中创建的类
[程序集:Xamarin.Forms.Dependency(typeof(OpenAppService))]
名称空间pricaxamarin.Droid
{
公共类OpenAppService:Activity,IOpenAppService
{
公共任务启动(字符串stringUri)
{
尝试
{ 
Intent-Intent=Android.App.Application.Context.PackageManager.GetLaunchIntentForPackage(stringUri);
if(intent!=null)
{
intent.AddFlags(ActivityFlags.NewTask);
形式。语境。起始触觉(意图);
}
其他的
{
意图=新意图(intent.ActionView);
intent.AddFlags(ActivityFlags.NewTask);
SetData(Android.Net.Uri.Parse(“market://details?id=“+stringUri”);//这将启动PlayStore,并在设备上未安装应用程序时搜索该应用程序
形式。语境。起始触觉(意图);
}
返回Task.FromResult(true);
}
抓住{
返回Task.FromResult(false);
}
}
}
}
我能做的就是传递一些应用程序的“意图”,比如WhatSapp的“意图”,如注释行所示,这将打开WhatSapp应用程序

//DependencyService.Get<IOpenAppService>().Launch("com.whatsapp");
//DependencyService.Get().Launch(“com.whatsapp”);
但我找不到打开Slack应用程序的方法。 Slack是否有任何I“意图”?

您可以通过使用Slack“深度链接”并跳过依赖项服务:

等待Xamarin.Essentials.Launcher.OpenAsync(“slack://open");
用法示例:
if(等待Xamarin.Essentials.Launcher.CanOpenAsync(“slack://”)
{
等待Xamarin.Essentials.Launcher.OpenAsync(“slack://open");
}
其他的
{
//加载Stack应用程序的应用商店页面…或者您可以打开设备的浏览器https://slack.com....
if(Xamarin.Essentials.DeviceInfo.Platform==Xamarin.Essentials.DevicePlatform.iOS)
等待Xamarin.Essentials.Browser.OpenAsync(“https://itunes.apple.com/app/slack-app/id618783545?ls=1&mt=8");
else if(Xamarin.Essentials.DeviceInfo.Platform==Xamarin.Essentials.DevicePlatform.Android)
等待Xamarin.Essentials.Browser.OpenAsync(“https://play.google.com/store/apps/details?id=com.Slack&hl=en_US");
其他的
Console.WriteLine(“其他东西?启动设备浏览器?…”;
}
回复:(跳到“使用松弛的深度链接://”部分)

您可以通过使用松弛的“深度链接”并跳过依赖项服务:

等待Xamarin.Essentials.Launcher.OpenAsync(“slack://open");
用法示例:
if(等待Xamarin.Essentials.Launcher.CanOpenAsync(“slack://”)
{
等待Xamarin.Essentials.Launcher.OpenAsync(“slack://open");
}
其他的
{
//加载Stack应用程序的应用商店页面…或者您可以打开设备的浏览器https://slack.com....
if(Xamarin.Essentials.DeviceInfo.Platform==Xamarin.Essentials.DevicePlatform.iOS)
等待Xamarin.Essentials.Browser.OpenAsync(“https://itunes.apple.com/app/slack-app/id618783545?ls=1&mt=8");
else if(Xamarin.Essentials.DeviceInfo.Platform==Xamarin.Essentials.DevicePlatform.Android)
等待Xamarin.Essentials.Browser.OpenAsync(“https://play.google.com/store/apps/details?id=com.Slack&hl=en_US");
其他的
Console.WriteLine(“其他东西?启动设备浏览器?…”;
}
回复:(跳到“使用松弛的深度链接://”部分)

使用方案

使用方案


非常感谢这个答案对我有帮助我非常感谢这个答案对我有帮助
//DependencyService.Get<IOpenAppService>().Launch("com.whatsapp");
Device.OpenUri(new Uri("slack://open"));