需求:简单的拨号器,布局需要一个输入框EditText,还有一个拨号按钮,负责拨号动作
1、在布局文件中加入:
<EditText android:id="@+id/et_number" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:hint="请输入电话号码" /> <Button android:id="@+id/btn_call" android:layout_marginTop="10dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18dp" android:text="拨号"/>
2、在Activity的onCreate方法中先后获取两个控件的对象,都定义成成员变量,方便按钮的点击方法响应来调用:
private Button btnCall; private EditText etNumber;
etNumber = (EditText) findViewById(R.id.et_number); btnCall = (Button) findViewById(R.id.btn_call);
同时写上
public class MainActivity extends Activity implements OnClickListener
4、实现Listener对应的onClick方法,代码如下,注意事项有两点,一是这里只能使用隐式意图,因为调用的系统拨号的activity不是本应用的;打电话不仅要设置Action还要设置data为要拨打的号码:
@Override public void onClick(View v) { String number = etNumber.getText().toString().trim(); if(TextUtils.isEmpty(number)){ Toast.makeText(this, "对不起,电话号码不能为空", Toast.LENGTH_SHORT).show(); return ; }else { //这里只能用隐式意图,因为这里要调用系统打电话的Activity,不属于这个应用 Intent intent = new Intent(); //setAction里面的参数都是Intent类里面的静态成员变量 //同时在清单文件中需要加入对应的打电话的权限 intent.setAction(Intent.ACTION_CALL); //打电话光设置动作还不够,还需要设置打电话的号码 //这里是固定写法,前面要加一个tel: intent.setData(Uri.parse("tel:"+number)); //开始打电话Activity,这个是不需要回传数据的调用方法 startActivity(intent); }
5、最后不要忘记拨打电话是需要对应的权限的,于是在清单文件manifest.xml中加入对应的permission
<uses-permission android:name="android.permission.CALL_PHONE"/>