ActivityNotFoundException al llamar a Intent.ACTION_CALL
Recibo ActivityNotFoundException
cuando realizo la operación Intent.ACTION_CALL. Encontré muchos enlaces, pero todo esto no pudo resolver mi problema.
A veces me da la excepción como
- HttpURLConnections persistentes en Android
- Uso de Observable en Android
- Eliminar todas las clases no utilizadas, métodos del proyecto de Android Studio
- Android / java getIdentifier con
- OnClickListener en Android Studio
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CALL dat=tel:xxx-xxx-xxxx pkg=com.android.phone (has extras) }
He utilizado el siguiente código en mi proyecto
String contact_number="123456789"; Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("tel:" + contact_number)); startActivity(callIntent);
- Servicio de Android Creación de una nueva instancia de clase Singleton
- Android instrumentación prueba java.lang.UnsatisfiedLinkError en el uso de AndroidJunitRunner y AndroidJUnit4
- Convertir Vec4i a Java openCV
- Android: animateLayoutChanges no funcionará en el diseño de los padres
- ¿Cómo recuperar una lista de fuentes disponibles / instaladas en android?
- Descargar un archivo con Android y mostrar el progreso en un ProgressDialog
- Eclipse no crea nueva actividad y archivo de diseño xml (problemas iniciados después de actualizar eclipse y sdk)
- Cómo cambiar el tamaño de Bitmaps de la manera óptima en Android?
No hay ninguna garantía de que la intención dada se puede manejar (es decir, las tabletas pueden no tener aplicación de telefonía en absoluto). Si no hay ninguna aplicación con intent-filter
intenciones que coincida con su intención, entonces se enfrentará a la excepción de ActivityNotFoundException
. El enfoque adecuado es ser consciente de esto y utilizar try/catch
para derrotar el accidente y recuperar adecuadamente:
try { String contact_number="123456789"; Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("tel:" + contact_number)); startActivity(callIntent); } catch (Exception e) { // no activity to handle intent. show error dialog/toast whatever }
También debería usar ACTION_DIAL
en ACTION_DIAL
lugar, ya que ACTION_CALL
requiere permiso adicional.
Debe comprobar si hay alguna actividad que maneje esta intención antes de iniciarla. Esto puede suceder si su aplicación se ejecuta en una tableta con sólo wifi y no tiene capacidad de teléfono. Además, si sólo desea iniciar el marcador, utilice mejor ACTION_DIAL
que ACTION_CALL
que realiza la llamada directamente desde su aplicación.
final Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:")); if (dialIntent.resolveActivity(context.getPackageManager()) != null) { // put your logic to launch call app here }
He resuelto este problema. He utilizado el siguiente código
String contact_number="123456789"; Intent callIntent = new Intent(Intent.ACTION_CALL); intent.setPackage("com.android.phone"); callIntent.setData(Uri.parse("tel:" + contact_number)); startActivity(callIntent);
He reemplazado esta línea por Lollipop
intent.setPackage("com.android.phone");
con
intent.setPackage("com.android.server.telecom");
Este es mi código
if (BuildUtil.isAndroidM()) { if (ActivityCompat.checkSelfPermission(mActivity, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(mActivity, PermissionUtil.requestPermissionFineAndCoarse(), PHONE_REQUEST_CODE); } } else { Intent callIntent = new Intent(Intent.ACTION_CALL); if (BuildUtil.isAndroidL()) { callIntent.setPackage("com.android.server.telecom"); } else { callIntent.setPackage("com.android.phone"); } callIntent.setData(Uri.parse("tel:" + phone)); startActivity(callIntent); }
- AVD Manager no puede encontrar herramientas \ android.bat aunque esté allí
- La notificación de estilo multimedia no funciona después de la actualización a Android 5.0