在Android中调用intent

时间:2012-05-09 05:37:59

标签: android android-intent android-implicit-intent

如何通过按下按钮来制作call?我从EditText得到了我的号码作为字符串。这是我的示例代码:

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

7 个答案:

答案 0 :(得分:27)

这种简单的方法对您有用。

实施例

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超出范围。

答案 1 :(得分:10)

我认为你错过了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);

答案 2 :(得分:5)

请参阅以下代码,它可能会对您有所帮助。

致电

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

答案 3 :(得分: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" />

答案 4 :(得分:2)

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

以上是用于在Android中拨打电话号码的唯一方法,当您点击呼叫按钮时,“dilerpad”活动以已填充的电话号码启动,如果您按下呼叫按钮,呼叫将会转到拨号盘。

答案 5 :(得分:0)

Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:" +"93");
intent.setData(Uri.parse(uri));
startActivity(intent);

答案 6 :(得分: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);