2011-01-27 20 views
85

estoy pasando a una actividad que el número al que llamar por un haz¿Cómo hacer una llamada telefónica programáticamente?

y luego, en tal actividad, tengo un botón para llamar a ese número, este es el código:

callButton.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(bundle.getString("mobilePhone"))); 
      } 
     }); 

algo está mal, porque cuando se presiona el botón no pasa nada ...

lo que estoy haciendo mal?

PD: estoy usando Android 1.5 compatible proyecto ... tal llamada telefónica es incompatible con 1,5?

+0

pls pegar Logcat O/P o elaborar ur detalles del error –

Respuesta

203

que se olvidó de llamar startActivity. Debería verse así:

Intent intent = new Intent(Intent.ACTION_CALL); 

intent.setData(Uri.parse("tel:" + bundle.getString("mobilePhone"))); 
context.startActivity(intent); 

Un intento en sí mismo es simplemente un objeto que describe algo. No hace nada.

No se olvide de agregar el permiso correspondiente a su manifiesta:

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

Hola @Lior ¿Cómo podría hacer en caso de que el dispositivo tiene-SIM dual. ¿Es posible hacer llamadas a través de una tarjeta SIM en particular? – Dinash

+1

@Dinash: Echa un vistazo a esta pregunta ya respondida: http://stackoverflow.com/questions/13231962/call-from-second-sim – Lior

+0

Recibe mi voto favorable, mi buen amigo samaritano. – Josh

13
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+198+","+1+","+1)); 
      startActivity(callIntent); 

para múltiples ordenó llamada

Esto se utiliza para sistemas de llamada DTMF. Si la llamada se cae, debe pasar más "," entre números.

+0

Dwivedi Ji: el número es como 1689, 3,2,1,1. Estoy recibiendo un problema, será solo 1689 ... Por favor, ayúdenme si tiene alguna solución para el mismo. –

+0

@TeraiyaMayur, depende del sistema de llamada IVRS. Su trabajo para mí debido a mi apoyo a la extinción de llamadas tiene una respuesta temprana. –

+0

Sí, tiene razón, también obtengo el número de IVR válido y funciona bien. Gracias –

17

Probé esto en mi teléfono y funciona perfectamente.

Intent intent = new Intent(Intent.ACTION_CALL); 
intent.setData(Uri.parse("tel:900...")); 
startActivity(intent); 

Agregue este permiso en el archivo de manifiesto.

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

el número es como 1689, 3,2,1,1. Estoy recibiendo un problema, será solo 1689 ... Por favor, ayúdenme si tiene alguna solución para el mismo. –

+0

@TeraiyaMayur primero puede eliminar cualquier carácter no numérico. Entonces, si tiene un número de teléfono como 'Número de cadena =" 1689,, 3,2,1,1' do 'nubmer =" tel: "+ number.replaceAll (" [^ 0-9] "," ");' – Walk

2

Aquí le mostraré cómo puede hacer una llamada de su actividad. Para hacer una llamada, debes poner este código en tu aplicación.

try { 
    Intent my_callIntent = new Intent(Intent.ACTION_CALL); 
    my_callIntent.setData(Uri.parse("tel:"+phn_no)); 
    //here the word 'tel' is important for making a call... 
    startActivity(my_callIntent); 
} catch (ActivityNotFoundException e) { 
    Toast.makeText(getApplicationContext(), "Error in your phone call"+e.getMessage(), Toast.LENGTH_LONG).show(); 
} 
+0

la respuesta aceptada es la misma que la tuya entonces ¿por qué la publicaste? – ArtemStorozhuk

+1

@Astor la he definido muy claramente, y ya he obtenido puntos a través de esto, lo que significa que mi respuesta es algo mejor que la otra para algunos gente. –

0
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    final Button button = (Button) findViewById(R.id.btn_call); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      String mobileNo = "123456789"; 
      String uri = "tel:" + mobileNo.trim(); 
      Intent intent = new Intent(Intent.ACTION_CALL); 
      intent.setData(Uri.parse(uri)); 
      startActivity(intent); 
     } 
    });* 
} 
3

En la respuesta seleccionada, no hay verificación de permiso de malvavisco. No funcionará directamente en marshmallow 6.0 o dispositivo superior.

Yo sé que soy demasiado tarde, pero esta cuestión tiene gran voto, así que pensé que le ayudará a otros en el futuro.

En los dispositivos de malvavisco tenemos que tener el permiso de ejecución para la llamada ...

Aquí es ejemplo para hacer llamadas en malvavisco o superior.

How to make call in android marshmallow 6.0 or above

Cuestiones relacionadas