通过意图打开whatsapp在Android 11中不起作用
Posted
技术标签:
【中文标题】通过意图打开whatsapp在Android 11中不起作用【英文标题】:Opening whatsapp through intent not working in Android 11 【发布时间】:2021-02-28 11:39:18 【问题描述】:有意打开 Whatsapp 在 android OS 11 中不起作用,但在 android (OS) 10 设备上运行良好,它会在 android 11 设备上显示消息“Whatsapp 应用程序未安装在您的手机中”。有人对此有解决方案吗?
String contact = "+91 9999999999"; // use country code with your phone number
String url = "https://api.whatsapp.com/send?phone=" + contact;
try
PackageManager pm = context.getPackageManager();
pm.getPackageInfo("com.whatsapp", PackageManager.GET_ACTIVITIES);
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
context.startActivity(i);
catch (PackageManager.NameNotFoundException e)
Toast.makeText(mContext, "Whatsapp app not installed in your phone",Toast.LENGTH_LONG).show();
e.printStackTrace();
【问题讨论】:
嘿,你是说 OS11 还是 Android 11?你的意思可能是模棱两可的。考虑编辑您的问题。 【参考方案1】:"com.whatsapp"
也可能是罪魁祸首。
我也对这条消息感到困惑。
问题是 “whatsApp 业务应用”,其包名称为:"com.whatsapp.w4b"
使用以下代码找出安装了哪一个:
String appPackage="";
if (isAppInstalled(ctx, "com.whatsapp.w4b"))
appPackage = "com.whatsapp.w4b";
//do ...
else if (isAppInstalled(ctx, "com.whatsapp"))
appPackage = "com.whatsapp";
//do ...
else
Toast.makeText(ctx, "whatsApp is not installed", Toast.LENGTH_LONG).show();
private boolean isAppInstalled(Context ctx, String packageName)
PackageManager pm = ctx.getPackageManager();
boolean app_installed;
try
pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
app_installed = true;
catch (PackageManager.NameNotFoundException e)
app_installed = false;
return app_installed;
【讨论】:
【参考方案2】:package visibility的android 11有新变化。
您需要在应用的<manifest>
标签下添加一个新部分:
<queries>
<package android:name="com.whatsapp" />
</queries>
【讨论】:
感谢您的帮助。我已经在清单文件中添加了如上所述的包名称,但 Gradle 构建失败并显示错误,因为任务“:app:processDebugManifest”的执行失败。 > 清单合并失败并出现多个错误,请参阅日志... 请分享您的清单和配置 - 目标 sdk、构建工具、android studio 和 gradle 插件版本。 通过在清单文件中添加queries
选项更正确。
以上是关于通过意图打开whatsapp在Android 11中不起作用的主要内容,如果未能解决你的问题,请参考以下文章