1、主要分为两部分,布局和逻辑代码,首先看布局如下:
2、下面是逻辑代码:
package cn.zxy.phone;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.app.Activity;
import android.content.Intent;
public class PhoneActivity extends Activity {
private EditText et_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_phone);
//寻找界面里的按钮,给按钮注册一个打电话的监听事件
//获取按钮对象并强转一下
Button bt = (Button) findViewById(R.id.bt_call);
//由于界面初始化之后EditText就初始化好不会再变了,所以不用每次点的时候都去重新生成,将对象定义在方法外面即可;
et_number=(EditText)findViewById(R.id.et_number);
//new 我们自己写的监听对象,如果输入号码为空会提示用户号码不能为空
bt.setOnClickListener(new MyLinstener());
}
private class MyLinstener implements OnClickListener{
//当某个view对象被点击的时候调用的方法
//因为继承了OnClickListener接口,所以要实现里面的onClick方法,该方法名不要写错了
public void onClick(View v){
//获取文本里内容
String number=et_number.getText().toString().trim();
//判断如果为空则提示用户
if("".equals(number)){
Toast.makeText(getApplicationContext(), R.string.msg, Toast.LENGTH_LONG).show();
return;
}
else{
//描述一个意图,让系统指定相应的组件来执行操作
Intent intent=new Intent();//初始化一个意图
intent.setAction(Intent.ACTION_CALL);//告知我们具体什么意图,打电话意图;
intent.setData(Uri.parse("tel:"+number));//传入要拨打的电话号码,tel为隐式意图
startActivity(intent);//启动运行
}
}
}
}
但此时运行的话不会成功,因为还存在一个权限的问题,谷歌工程师在设置安卓系统的时候对上面运行的程序的权限是有限制的,在这里我们要赋予咱们的应用打电话的权限,如何设置见下图:
4、运行效果如下图: