电话拨号器是很基础的知识,很多学习Android开发的人第一个程序可能就是这个,今天我也学习了拨号器的开发,记录以下笔记。
拨号器的开发:首先设计界面,
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/phone" />
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/bohao"
android:id="@+id/bohao"
/>
</LinearLayout>
设计完界面之后,就来完成功能,所需要的功能是,在EditText中输入电话号码,然后点击按钮拨号。
思路是先获取button,然后设置一个点击事件监听对象,这里包含的知识有:
setContentView(R.layout.activity_main);
Button button= (Button)this.findViewById(R.id.bohao);
edittext=(EditText)findViewById(R.id.editText);
button.setOnClickListener(new ButtonOnclickListener());
1、@id/button,是在R文件中id内部类里面添加一个常量,并且使用这个常量所指向的值作为id的属性的值。
2、界面显示对象最终父类都是View
然后是点击按钮的处理
private final class ButtonOnclickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String number=edittext.getText().toString();
Intent intent=new Intent();
intent.setAction("android.intent.action.CALL");
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
}
获取EditText中的文本,声明一个意图。
我们是使用Android自带的拨号功能,所以需要用android.intent.action.CALL动作,所以我们队我们的意图进行设置,使其能与意图过滤器匹配。
意图过滤器包含三个部分:
<action>动作名称
<category>类别
<data>数据,对数据格式的要求
startActivity()方法内部会自动为Intent添加类别,所以声明intent的时候就不需要声明类别。
最后是一个权限问题,调用拨号功能需要申请权限,所以要在manifest.xml(清单文件)中申请权限,权限的作用是在用户安装软件的过程中,提示用户该app会使用什么权限。
但是我还是出现了问题,我打开两个模拟器,其中一个向另一个拨号,但是只要点击拨号,就会崩溃,现在还不知道是什么问题。