una telefono telefonico studio sitio para numero llamar llamada hipervinculo hacer enlace directa cómo crear como clic botón boton action_call android button phone-call

android - telefonico - hipervinculo numero de telefono



hacer una llamada telefónica, hacer clic en un botón (13)

Intento hacer una llamada cuando presiono un botón en Android

((Button)findViewById(R.id.button1)).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String phno="10digits"; Intent i=new Intent(Intent.ACTION_DIAL,Uri.parse(phno)); startActivity(i); } });

Pero cuando corro y hago clic en el botón, me da el error

ERROR/AndroidRuntime(1021): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CALL dat=9392438004 }

¿Como puedo resolver este problema?


Hay dos intentos para llamar / comenzar a llamar: ACTION_CALL y ACTION_DIAL.

ACTION_DIAL solo abrirá el dialer with the number rellenado, pero le permite al usuario realmente c all or reject the call . ACTION_CALL llamará inmediatamente al número y requiere un permiso adicional .

Así que asegúrate de tener el permiso

uses-permission android:name="android.permission.CALL_PHONE"

en tu AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.dbm.pkg" android:versionCode="1" android:versionName="1.0"> <!-- NOTE! Your uses-permission must be outside the "application" tag but within the "manifest" tag. --> <uses-permission android:name="android.permission.CALL_PHONE" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <!-- Insert your other stuff here --> </application> <uses-sdk android:minSdkVersion="9" /> </manifest>


¿Ha dado el permiso en el archivo de manifiesto

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

y dentro de tu actividad

Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("tel:123456789")); startActivity(callIntent);

Avísame si encuentras algún problema.


Acabo de resolver el problema en un dispositivo con Android 4.0.2 (GN) y la única versión que funciona para este dispositivo / versión era similar al primero de 5 estrellas con el permiso CALL_PHONE y la respuesta:

Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("tel:123456789")); startActivity(callIntent);

Con cualquier otra solución, obtuve la ActivityNotFoundException en este dispositivo / versión. ¿Qué hay de las versiones anteriores? ¿Alguien daría su opinión?


Con permiso:

Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("tel:9875432100")); if (ActivityCompat.checkSelfPermission(yourActivity.this,android.Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(yourActivity.this, android.Manifest.permission.CALL_PHONE)) { } else { ActivityCompat.requestPermissions(yourActivity.this, new String[]{android.Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_CALL_PHONE); } } startActivity(callIntent);


Estaba pasando un infierno con esto también. No me di cuenta de que más allá del permiso adicional, debe agregar "tel:" en la cadena que tiene el número. Esto es lo que parece el mío después de hacerlo funcional. Espero que esto ayude.

@Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_DIAL); String temp = "tel:" + phone; intent.setData(Uri.parse(temp)); startActivity(intent); }


Ninguno de los anteriores funcionó así que con un poco de retoque aquí está el código que hizo por mí

Intent i = new Intent(Intent.ACTION_DIAL); String p = "tel:" + getString(R.string.phone_number); i.setData(Uri.parse(p)); startActivity(i);


Para aquellos que usan AppCompact ... Pruebe esto

import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.content.Intent; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import android.net.Uri; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button startBtn = (Button) findViewById(R.id.db); startBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { makeCall(); } }); } protected void makeCall() { EditText num = (EditText)findViewById(R.id.Dail); String phone = num.getText().toString(); String d = "tel:" + phone ; Log.i("Make call", ""); Intent phoneIntent = new Intent(Intent.ACTION_CALL); phoneIntent.setData(Uri.parse(d)); try { startActivity(phoneIntent); finish(); Log.i("Finished making a call", ""); } catch (android.content.ActivityNotFoundException ex) { Toast.makeText(this, "Call faild, please try again later.", Toast.LENGTH_SHORT).show(); } } }

Luego agrega esto a tu manifiesto ,,,

<uses-permission android:name="android.permission.CALL_PHONE" />


Para tener el código dentro de una línea, intente esto:

startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:123456789")));

junto con el permiso de manifestación adecuado:

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

¡Espero que esto ayude!


También es bueno verificar si la telefonía es compatible con el dispositivo

private boolean isTelephonyEnabled(){ TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); return tm != null && tm.getSimState()==TelephonyManager.SIM_STATE_READY }


agregue "tel:" junto con su número para marcar en su intento y luego comience su actividad.

Intent myIntent = new Intent(Intent.ACTION_CALL); String phNum = "tel:" + "1234567890"; myIntent.setData(Uri.parse(phNum)); startActivity( myIntent ) ;


cambie su String a String phno="tel:10digits"; e intenta de nuevo.


compruebe los permisos antes (para Android 6 y superior):

if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) { context.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:09130000000"))); }


I hope, this short code is useful for You, ## Java Code ## startActivity(new Intent(Intent.ACTION_DIAL,Uri.parse("tel:"+txtPhn.getText().toString()))); ---------------------------------------------------------------------- Please check Manifest File,(for Uses permission) ## Manifest.xml ## <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.dbm.pkg" android:versionCode="1" android:versionName="1.0"> <!-- NOTE! Your uses-permission must be outside the "application" tag but within the "manifest" tag. --> ## uses-permission for Making Call ## <uses-permission android:name="android.permission.CALL_PHONE" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <!-- Insert your other stuff here --> </application> <uses-sdk android:minSdkVersion="9" /> </manifest>