【问题标题】:Opening whatsapp through intent not working in Android 11通过意图打开whatsapp在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?你的意思可能是模棱两可的。考虑编辑您的问题。

标签: java android android-studio android-intent whatsapp


【解决方案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 选项更正确。
    • 不加这行权限可以正常工作,但是加了之后就不行了
    猜你喜欢
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2017-10-10
    • 2021-12-14
    • 2015-12-23
    相关资源
    最近更新 更多