我正在开发 Flutter 应用程序,需要您的帮助来改进 WhatsApp 链接的处理。目前,当我单击电话号码时,会出现底部表单(或弹出窗口),询问我是否要使用拨号器或 WhatsApp。但是,当我选择 WhatsApp 时,它会在浏览器中打开一个页面,然后(在某些设备上,但在其他设备上则不会)打开一个 Android 弹出窗口,让我在 WhatsApp 和 WhatsApp Business 之间进行选择。
这种行为在不同设备上是不一致的,我想避免浏览器步骤,因为它可能会让不懂技术的用户(我的应用程序的大多数用户)感到困惑。
我的目标是,当我按下“WhatsApp”时,会直接出现一个对话框,允许我在 WhatsApp 和 WhatsApp Business 之间进行选择,并可以选择“仅一次”或“始终”。我想避免强迫用户更改 Android 设置以选择默认的 WhatsApp 应用程序。
这是我目前用来处理 WhatsApp 的代码,但它没有按预期工作:
void _launchWhatsApp(String phoneNumber) async {
const whatsappBusinessScheme = 'whatsapp://send?phone=';
const whatsappScheme = 'https://wa.me/';
final Uri whatsappBusinessUri =
Uri.parse('$whatsappBusinessScheme$phoneNumber');
if (await canLaunchUrl(whatsappBusinessUri)) {
await launchUrl(whatsappBusinessUri);
} else {
final Uri whatsappUri = Uri.parse('$whatsappScheme$phoneNumber');
if (await canLaunchUrl(whatsappUri)) {
await launchUrl(whatsappUri);
} else {
Get.snackbar('error'.tr, 'whatsapp_error'.tr);
}
}
}
我需要在 AndroidManifest 或 info.plist 中添加一些内容吗?或者我缺少什么? 有人对如何在不通过浏览器的情况下实现此功能有建议吗?任何帮助将不胜感激!
提前致谢!
在 externalApplication
url_launcher
模式
launchUrl(url, mode: LaunchMode.externalApplication)