public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button)findViewById(R.id.btn_dial);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dial();
}
});
}
public void dial(){
EditText et = (EditText)MainActivity.this.findViewById(R.id.et_number);
String number = et.getText().toString();
Intent intent = new Intent();
intent.setAction(intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + number));
startActivity(intent);
}
}
代码就这样,运行时出了一些意外。
Button实例一开始创建在onCreate方法外面,引发空指针异常。
intent设置活动ACTION.CALL仍然出现意外。
以下为引用:
android 中关于Phone的ACTION_CALL、ACTION_CALL_PRIVILEGED、ACTION_DIAL的区别?
系统拨打电话可以调用action如下:
ACTION_CALL(普通),
ACTION_CALL_EMERGENCY (紧急电话),
ACTION_CALL_PRIVILEGED(系统专属),
而普通应用要拨打电话只能调用ACTION_CALL.
-
追问:
- ACTION_DIAL什么时候用?和ACTION_CALL、ACTION_CALL_PRIVILEGED的区别是?
-
追答:
- ACTION_DIAL 拨打一个指定的号码,显示一个带有号码的用户界面,允许用户去启动呼叫 ACTION_CALL 根据指定的数据执行一次呼叫 ACTION_CALL_PRIVILEGED 我只知道是系统专属,是个private API,程序员几乎不用…… (ACTION_CALL在应用中启动一次呼叫有缺陷,多数应用ACTION_DIAL,ACTION_CALL不能用在紧急呼叫上,紧急呼叫可以用ACTION_DIAL来实现) 我知道的只能回答这么多了……希望能对你有一点点帮助。