目标,实现简单的电话拨号功能。
首先,可以看到上边有几个控件,上边有几个文字。
在我们建立好了工程之后,我们首先可以在res目录下的values目录的strings.xml中把这几个文字添加进去,为了更好地实现国际化。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, MainActivity!</string> <string name="app_name">电话拔号器</string> <string name="mobile">请输入手机号</string> <string name="button">拔号</string> </resources>
接下来,我们需要实现这个Activity窗口。可以看出,这个界面中有三个组件:第一行的”请输入手机号“,第二行的手机号文本框,第三行的“拨号”按钮。
所以,我们在res目录下的layout目录的main.xml配置文件中添加这几个组件:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/mobile" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/mobile" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button" android:id="@+id/button" />
做到这里的时候,界面就是已经做好了。
这个时候,我们需要通过java来实现这个拨号器的拨号功能了:
我们需要编写MainActivity.java:
package cn.itcast.phone; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { private EditText mobileText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mobileText = (EditText) findViewById(R.id.mobile);//获得文本输入框:通过main中的id为mobile的属性 Button button = (Button) this.findViewById(R.id.button); //获得Button button.setOnClickListener(new ButtonClickListener());//设置点击事件的监听器 } private final class ButtonClickListener implements View.OnClickListener{ public void onClick(View v) { //默认实现方法,当按钮被点击就会被调用 String number = mobileText.getText().toString(); //通过文本输入框,获得文本输入框的值 Intent intent = new Intent(); //得到一个意图对象 intent.setAction("android.intent.action.CALL"); //传递动作名称 intent.setData(Uri.parse("tel:"+ number)); //传递数据 startActivity(intent);//方法内部会自动为Intent添加类别:android.intent.category.DEFAULT } } }
我们来分析下程序的过程:
首先,调用setContentView(R.layout.main);来获得main窗口,然后通过findViewById(R.id.mobile)获得在main.xml中id为mobile的文本输入框。
接下来,通过findViewById(R.id.button);获得在main.xml中id为button的按钮。
继续,用setOnclickListener(new ButtonClickListener());来设置点击事件的监听器。
再下边,我们需要编写一个ButtonClickListener()类,用final来标记不能够被继承。
在这个类中添加未被实现的方法,当点击的时候会被调用:Onckick(View v)。
在方法中,调用mobileText.getText().toString()来获得文本框输入的手机号码。
然后,通过intent传递拨打电话的动作名称:“android.intent.action.CALL"
通过intent传递数据:intent.setDate(Uri.parse("tel:"+number));
接下来开启intent意图。
因为拨打电话涉及到数据的隐私,所以我们需要在AndroidMainfest.xml中添加一个安全控制:
<uses-permission android:name="android.permission.CALL_PHONE"/>
到了这个时候,一个电话拨号器基本就完成了。