Android打电话主要就是用内部类加上监听器实现的,比较的简单和粗糙,这里没有进行什么美化。用到的是以前所用的MVC模式,其中main.xml就相当于view视图层,主要是通过activity文件的调用从而达到视图界面的搭建
首先是页面的实现,页面设计的只是功能用到的一些东西。在string.xml中定义文字提示信息,下面是string.xml的部分代码:
<string name="app_name">拨打电话</string>
<string name="myPhone">请输入您要拨打的号码:</string>
<string name="dial_phone">拨打</string>
然后在main.xml中,定义视图层显示页面,以下是部分代码:
//定义显示标签的提示信息
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/myPhone"/>
//输入文本框的显示风格
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/phone_number"/>
//按钮的显示及其按钮的值
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/dial_btn"
android:text="@string/dial_phone" />
随后就是监听的注册和实现,在activity文件中进行编译,通过内部类方法实现监听器的注册和监听实现。要实现拨打功能首先就要获取用户输入的号码,要处理的文本框输入信息的值是一个EditText类型的值,但是传过来的值是一个String字符串,很有可能里面会有空格的出现,这时就需要进行字符串的去空格操作。这些操作进行完毕后需要进行判断得到的字符串是否为空,如果是空值,电话肯定就拨打不出去了;若不为空就要封装一个拨打电话的intent,并且将电话号以uri的形式传入到activity对象中。以下是部分代码:
EditText numberEt;
Button dialBtn;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
/*创建内部监听类*/
dialBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//调用系统的拨号服务实现电话拨打功能
String phone_number = numberEt.getText().toString();
//对字符串进行去空格操作
phone_number = phone_number.trim();
if(phone_number!=null && !phone_number.equals("")){
//封装一个拨打电话的intent,并且将电话号码封装成一个Uri对象传入
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+ phone_number));
PhoneActivity.this.startActivity(intent);
}
}
});
}
public void findViews(){
numberEt = (EditText) this.findViewById(R.id.phone_number);
dialBtn = (Button) this.findViewById(R.id.dial_btn);
}