Abrir Whatsapp con intención no funciona en Android OS 11 pero funciona bien hasta dispositivos Android (OS) 10. Muestra el mensaje "La aplicación Whatsapp no está instalada en su teléfono" en el dispositivo Android 11. ¿Alguien tiene una solución para esto?
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(); }Hay nuevos cambios en Android 11 devisibilidad de paquetes .
Debe agregar una nueva sección debajo de la etiqueta <manifest> de su aplicación:
<queries> <package android:name="com.whatsapp" /> </queries>"com.whatsapp"
también puede ser el culpable .
Yo también estaba aturdido con este mensaje.
el problema era "aplicación comercial de WhatsApp" que tiene el nombre del paquete:
"com.whatsapp.w4b"
usó el siguiente código para averiguar cuál está instalado:
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; }En lugar de agregar los nombres de cada paquete en , puede agregar:
**<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" />**a su archivo AndroidManifest.xml en su proyecto. También me estaba molestando con lo mismo, este permiso me permitió solucionar mi problema/error.