拨打电话
拨打电话有两个关键的方面:
1. 在AndroidManifest.xml中添加uses-permission,<uses-permission android:name="android.permission.CALL_PHONE"/>
2. 通过自定义的Intent对象,带入"ACTION_CALL"这个ACTION,还要通过Uri.parse()的方法将用户输入的电话号码(Data)带入,最后调用startActivity方法。
package com.kevin.phone;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.R.bool;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Canvas.EdgeType;
import android.net.Uri;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Main extends Activity {
private Button btn_call;
private EditText number;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
number = (EditText) findViewById(R.id.editText1);
btn_call = (Button) findViewById(R.id.button1);
btn_call.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
String phone = number.getText().toString();
if(isValid(phone)){
// 构建Intent对象
Intent callIntent = new Intent(
"android.intent.action.DIAL",
Uri.parse("tel:" + phone));
startActivity(callIntent);
number.setText("");
}else{
number.setText("");
Toast.makeText(Main.this, "非法电话号码", Toast.LENGTH_SHORT).show();
}
}
});
}
// 检测电话号码输入是否合法
private boolean isValid(String input){
boolean flag = true;
String expression = "^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{5})$";
String expression2 = "^\\(?(\\d{3})\\)?[- ]?(\\d{4})[- ]?(\\d{4})$";
// 创建Pattern
Pattern pattern = Pattern.compile(expression);
// 将Pattern以参数传入Matcher作Regular expression
Matcher matcher = pattern.matcher(input);
Pattern pattern2 = Pattern.compile(expression2);
Matcher matcher2 = pattern2.matcher(input);
if(matcher.matches() || matcher2.matches()){
flag = true;
}else{
flag = false;
}
return flag;
}
}