2012-05-09 16 views
6

¿Cómo puedo hacer call presionando el botón? Obtengo mi número como una cadena de EditText. Aquí está mi código de ejemplo:Intento de llamada en Android

String phone = editPhone.getText().toString(); 
btnPhone.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 

       call(); 
      } 
     }); 
public void call() { 
    try { 
     Intent callIntent = new Intent(Intent.ACTION_CALL); 
     callIntent.setData(Uri.parse(phone)); 
     startActivity(callIntent); 
    } catch (ActivityNotFoundException activityException) { 
     Log.e("myphone dialer", "Call failed", e); 
    } 
} 

he añadido todo permissions manifestar archivo.

pero yo estoy haciendo NullPointerexception

+0

¿cuál es su problema específico? – JoxTraex

+0

mi aplicación se aplasta por excepción de puntero nulo. ¿Me puede proporcionar un código fuente de muestra para hacer llamadas telefónicas? – user1383729

+0

Su código está bien, ¿el puntero nulo proviene de qué línea? la parte "Teléfono de cuerda"? – JoxTraex

Respuesta

25

Este sencillo enfoque debería funcionar para usted.

Ej.

public class CallActivity extends Activity{ 
    String phone = ""; 

    onCreate() 
    { 
     btnPhone.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       phone = editPhone.getText().toString(); 
       call(); 
      } 
     });  
    } 

    public void call() { 
      Intent callIntent = new Intent(Intent.ACTION_CALL);   
      callIntent.setData(Uri.parse("tel:"+phone));   
      startActivity(callIntent); 
    } 
} 

Puede que esté utilizando la variable de cadena phone fuera de alcance.

2
Intent callIntent = new Intent(Intent.ACTION_CALL); 
callIntent.setData(Uri.parse(phone)); 
startActivity(callIntent); 

anterior es el único método que se utiliza para llamar a un número de teléfono en el androide, al hacer clic en el botón de llamada de un activty 'dilerpad' se inicia con el número de teléfono perpopulated, y la llamada se ejecutará si presiona el botón de llamada en el marcador.

+1

Si usted lee su código, verías que él tiene que ... – JoxTraex

+0

no puedes hacer la llamada haciendo clic directamente en el botón de llamada, a su vez, se debe ir a la actividad de la almohadilla del marcador. –

+3

En realidad puedes, con el permiso para llamar. Hay 2 acciones, ACTION_DIAL y ACTION_CALL: donde el marcado de acción lo lleva al marcador con el número y la llamada envía la llamada. – JoxTraex

9

creo que se ha perdido la "tel:" parte de la URI.

sustituir los ..

Intent callIntent = new Intent(Intent.ACTION_CALL); 
     callIntent.setData(Uri.parse(phone)); 
     startActivity(callIntent); 

con

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

o

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

pero también, tengo otra pregunta:) cómo termino la llamada? no termina automáticamente ... – user1383729

+1

@ user1383729, si funciona, acepte la respuesta. – thepoosh

4

véase a continuación Código puede ayudarle.

para la llamada

EditText num = (EditText)findViewById(R.id.number_edit); 
String uri = "tel:" + num.trim(); 
Intent intent = new Intent(Intent.ACTION_CALL); 
intent.setData(Uri.parse(uri)); 
startActivity(intent); 

para el marcador abierto

Intent dial = new Intent(); 
dial.setAction("android.intent.action.DIAL"); 
dial.setData(Uri.parse("tel:")); 
startActivity(dial); 
+1

funciona, pero ¿cómo puedo terminar la llamada? No termina – user1383729

+0

llamada final funcionó en mi aplicación. ver si uso el código anterior, entonces el marcador del teléfono está abierto y hay un botón rojo para finalizar la llamada. Revísalo de nuevo. –

+0

¿Lo has comprobado o no? –

3
String PhoneNo="+923341234567" 
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + PhoneNo)); 
startActivity(intent); 

y añadir un permiso en el manifiesto

<uses-permission android:name="android.permission.CALL_PHONE" /> 
0
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:" +"93"); 
intent.setData(Uri.parse(uri)); 
startActivity(intent); 
0

Prueba esto

EditText num = (EditText)findViewById(R.id.phone_number); 
String uri = "tel:" + num.trim(); 
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(uri)); 
startActivity(intent); 
Cuestiones relacionadas