2012-05-09 20 views
6

Come posso rendere call premendo il pulsante? Ottengo il mio numero come stringa da EditText. Qui è il mio codice di esempio:Intenzione di chiamata in 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); 
    } 
} 

ho aggiunto tutto permissions di manifestare file.

ma sto ottenendo NullPointerexception

+0

qual è il tuo problema specifico? – JoxTraex

+0

la mia app si schiaccia per eccezione del puntatore nullo. puoi fornirmi un codice sorgente di esempio per effettuare chiamate? – user1383729

+0

Il tuo codice va bene, il puntatore nullo proviene da quale linea? la parte "String phone"? – JoxTraex

risposta

25

Questo semplice approccio dovrebbe funzionare per voi.

Es.

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); 
    } 
} 

Si potrebbe utilizzare String variabile phone fuori del campo di applicazione.

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

sopra è l'unico metodo che si utilizza per chiamare un numero di telefono in Android, quando si fa clic sul pulsante di chiamata di un activty 'dilerpad' viene avviato con il numero di telefono perpopulated, e la chiamata andrà se si preme il pulsante di chiamata sul tastierino numerico.

+1

Se leggi il suo codice, vedrai che ha ... – JoxTraex

+0

non puoi effettuare la chiamata cliccando direttamente sul pulsante di chiamata, a sua volta dovrebbe andare all'attività del tastierino. –

+3

In realtà è possibile, con il permesso di chiamare. Ci sono 2 azioni, ACTION_DIAL e ACTION_CALL: dove action dial ti porta al combinatore con il numero e la chiamata invia la chiamata. – JoxTraex

9

Penso che ti sia sfuggita la parte "tel:" nell'URI.

sostituire i seguenti ..

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

ma anche, ho un'altra domanda:) come finisco la chiamata ?? non finisce automaticamente ... – user1383729

+1

@ user1383729, se funziona accetta la risposta. – thepoosh

4

vedere sotto codice può essere di aiuto.

per la chiamata

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); 

per dialer aperta

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

funziona, ma come posso terminare la chiamata ?? non finisce – user1383729

+0

call end ha funzionato nella mia app. vedi se io uso sopra il codice quindi dialer telefonico aperto e c'è il pulsante rosso per la fine chiamata. controllalo di nuovo. –

+0

hai controllato o no ??? –

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

e aggiungere un permesso in palese

<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

Prova questo

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); 
Problemi correlati