上一节简单说明了一下Android系统实现打电话的机制,本节将通过一个简单的例子来说明怎么调用系统的功能来实现打电话。怎么来实现打电话这个功能呢?只要把一个参数传给信使,系统会自动调用底层的服务。我们首先要做的是构造出界面,拨打电话的界面如图8.3所示。

  这个界面就非常简单,它的操作就是在编辑框中输入电话号码。当单击“拨号”按钮时,就跳转到Android系统的打电话界面,下面来看看是如何实现的。

  (1)构造界面。构造界面的XML。

  (2)声明和实例化要用到的组件。

~ ^prTvSe Button”callButton; // 林拨打”按钮 一【

private Button resetButton; // “取?胄”按轨

private EditText phoneNumText; 〃输入号码编辑框 :

©rivate Textview notice; …£亦立離一   一「……一一…一」

  在方法init()中实例化组件,代码如下:

1 private void init(){

callButton = (Button) findViewBy!d(R. id.call) ; //实例化按钮

resetButton = (Button) findViewByld(R.id.reset);

phoneNumText = (EditText) findViewByld(R.id.phoneNum);

notice = (TextView) findViewByld(R.id.notice);

//添加事件

callButton.setOnClickListener(this);

resetButton ・ setOnClickListener (this);

  (3)按钮的事件处理,拨号按钮和取消按钮代码如下。

onClick (View^v)~T – ‘

//根据id做判断,id是每个组件的唯一标识,判断单击的是哪个按钮

switc匕一 Iv.getldH、 (  

case R.id.call: 亠 /7是拨打电话按钮

//获取编辑框中输入的内容

String phoneNum = phoneNumText.getText().toStrinq();

//判断是否为空

if(TextUtils.isEmpty(phoneNum)){

//为空则提示

Toast. makeText (CallPhoneActivity. this,”号码 不能 为空! ”,

5).show();

}else{

/ / 构建—个新的 Intent,并传入 android. intent. action. CALL 和一 uri

Uri uri = Uri.parse(“tel:”+phoneNum);

Intent intent = new Intent(”android.intent.ac•tian.CALL”#

uri) ; startActivity(intent);

}

break;

case R.id.reset:

phoneNuraText. setText (“”);

break;

}

}

  (4)在AndroidManifest.xml文件声明权限,如果没有声明则会抛出异常,下面来看看是怎么声明权限的,代码如下:

<!一S0EWR一> “;

i <uses-permission android:name=”android.permission.CALL_PHONE”>

: </uses-yermission>           __ _!

  调用系统的打电话功能主要涉及的是关于打电话的几个常用的action,最容易忽略的是在AndroidManifest.xml中声明权限,所以在调用时务必声明相应的权限。