通过意图打开whatsapp不在Android 11中工作



有意打开Whatsapp在android OS 11中不起作用,但在android(OS(10设备上运行良好,它显示消息";Whatsapp应用程序未安装在您的手机中";在android 11设备上。有人能解决这个问题吗?

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();
}

android 11中的包可见性有了新的变化
您需要在应用程序的<manifest>标签下添加一个新的部分queries,并使用所需的包名称:

<manifest package="com.example.app">
<queries>
<package android:name="com.whatsapp" />
</queries>
...
</manifest>

与其使用通配符,不如同时添加两个包名:

<manifest package="com.example.app">
<queries>
<package android:name="com.whatsapp"/>
<package android:name="com.whatsapp.w4b"/>
</queries>
...
</manifest>

"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;
}

您可以添加:

**<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" />**

到项目中的AndroidManifest.xml文件。我也遇到了同样的问题,这个权限允许我解决我的问题/错误。

要打开Whatsapp或Whatsapp Business on按钮,请单击使用以下代码。

打开whatsapp

Intent intent1 = getPackageManager().getLaunchIntentForPackage("com.whatsapp");
startActivity(intent1);

打开业务whatsapp

Intent intent2 = getPackageManager().getLaunchIntentForPackage("com.whatsapp.w4b");
startActivity(intent2);

最新更新