设备同时安装WhatsApp和WhatsApp Business时如何指定跳转至普通WhatsApp?
跳转至普通WhatsApp而非商业版的实现方法
问题原因
你当前使用的通用跳转逻辑没有指定目标应用包名,系统会调用用户设置的默认同类型应用打开链接,若之前默认选择了WhatsApp Business,就会每次都跳转至商业版。
最优解决方案:指定普通WhatsApp包名定向跳转
普通WhatsApp的官方包名为com.whatsapp,你可以通过给Intent设置包名的方式强制跳转到普通版,同时建议提前判断应用是否安装避免崩溃,修改后的代码如下:
// 校验普通WhatsApp是否已安装 boolean isNormalWhatsAppInstalled = false; try { getPackageManager().getPackageInfo("com.whatsapp", 0); isNormalWhatsAppInstalled = true; } catch (PackageManager.NameNotFoundException e) { // 普通版未安装时可按需添加降级逻辑,比如提示用户安装或走通用跳转 } if (isNormalWhatsAppInstalled) { Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("https://api.whatsapp.com/send?phone="+phonestr+"&text="+messagestr)); // 关键配置:指定普通版包名 i.setPackage("com.whatsapp"); startActivity(i); }
注意事项
- 若你的应用目标适配Android 11(API等级30)及以上版本,需要在
AndroidManifest.xml中添加包可见性声明,否则会始终判定普通WhatsApp未安装:<manifest ...> <queries> <package android:name="com.whatsapp" /> </queries> ... </manifest> - 如果你不想强制指定打开普通版,也可以选择弹出应用选择器让用户手动选择打开的应用,代码示例:
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("https://api.whatsapp.com/send?phone="+phonestr+"&text="+messagestr)); Intent chooserIntent = Intent.createChooser(i, "选择应用打开"); startActivity(chooserIntent);
内容的提问来源于stack exchange,提问作者dotcom
相关产品推荐
相关产品推荐

