Joh*_*ohn 6 java android android-intent whatsapp android-studio
有意打开 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();
}
Run Code Online (Sandbox Code Playgroud)
Yur*_*nko 11
android 11 中包可见性有新的变化。
您需要在您的应用程序<manifest>标签下添加一个新部分:
<queries>
<package android:name="com.whatsapp" />
</queries>
Run Code Online (Sandbox Code Playgroud)
不使用通配符,添加两个包名称会更明确:
<manifest package="com.example.app">
<queries>
<package android:name="com.whatsapp"/>
<package android:name="com.whatsapp.w4b"/>
</queries>
...
</manifest>
Run Code Online (Sandbox Code Playgroud)
"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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2960 次 |
| 最近记录: |