2012-05-09 84 views
6

如何通過按按鈕使call?我從EditText得到我的號碼作爲字符串。下面是我的示例代碼:在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); 
    } 
} 

我添加了所有permissions到清單文件。

但我正在逐漸NullPointerexception

+0

您的具體問題是什麼? – JoxTraex

+0

我的應用程序通過空指針異常粉碎。你能否提供我的示例源代碼來打電話? – user1383729

+0

你的代碼很好,空指針來自哪一行? 「串話機」部分? – JoxTraex

回答

25

這個簡單的方法應該爲你工作。

Ex。

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

您可能會使用字符串變量phone超出範圍。

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

上面是您用於調用Android的電話號碼,當你點擊通話按鈕「dilerpad」 activty開始與perpopulated電話號碼的唯一方法,如果按撥號盤上的呼叫按鈕,呼叫將會結束。

+1

如果你閱讀他的代碼,你會發現他有這個... – JoxTraex

+0

你不能通過直接點擊通話按鈕來撥打電話,反過來它應該去撥號器活動。 –

+3

其實你可以,有權調用。有2個動作,ACTION_DIAL和ACTION_CALL:動作撥號將您帶到撥號程序的號碼,並且呼叫將呼叫發送出去。 – JoxTraex

9

我想你錯過了URI中的「tel:」部分。

替換以下..

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

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

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

,但也有我的另一個問題:)我怎麼完成通話??它不會自動完成... – user1383729

+1

@ user1383729,如果它工作接受答案。 – thepoosh

4

看下面的代碼它可以幫助你。

呼叫

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

開放撥號

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

它的工作原理,但我怎麼能完成通話?它沒有完成 – user1383729

+0

通話結束在我的應用程序工作。看看我是否使用上面的代碼,然後打開電話撥號程序,並有結束通話的紅色按鈕。再次檢查。 –

+0

你檢查了嗎? –

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

和清單

<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

添加權限試試這個

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