搬运自本人博客:Android学习笔记(1)——电话拨号器
程序的实现过程非常简单,大体分为以下几步:
对于电话拨号器,我们最后的界面大致如下:
对应的布局文件如下,采用的是相对布局。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
android:layout_width = "match_parent" android:layout_height = "match_parent" android:paddingBottom = "@dimen/activity_vertical_margin" android:paddingLeft = "@dimen/activity_horizontal_margin" android:paddingRight = "@dimen/activity_horizontal_margin" android:paddingTop = "@dimen/activity_vertical_margin" tools:context = "com.xgezhang.dial.MainActivity"
> < EditText android:id = "@+id/et_number" android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:inputType = "phone"
> </ EditText > < Button android:onClick = "dialButtonClicked" android:id = "@+id/bt_dial" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_alignParentLeft
= "true" android:layout_below = "@+id/et_number" android:layout_marginTop = "10dp" android:text = "@string/dial" /> </ RelativeLayout > |
接下来我们来写对应的java代码,拨打电话这一过程,首先是要提取处et_number里面的值,点击按钮之后要往et_number的号码拨打电话。按钮事件我们可以通过注册内部类,去完成它的接口来实现。注意这里调用的OnClickListener;要是在android.view.View下的,不然会出错。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package
com.xgezhang.dial; import
android.app.Activity; import
android.content.Intent; import
android.net.Uri; import
android.os.Bundle; import
android.widget.Button; import
android.widget.EditText; import
android.widget.Toast; import
android.text.TextUtils; import
android.view.View; import
android.view.View.OnClickListener; public
class MainActivity extends
Activity implements
OnClickListener { private
EditText et_number; @Override protected
void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); //加载布局文件 setContentView(R.layout.activity_main); //查找按钮 Button bt_dial = (Button) findViewById(R.id.bt_dial); //查找文本框 et_number = (EditText) MainActivity. this .findViewById(R.id.et_number); // 1.创建一个内部类,实现OnClickListener的接口 bt_dial.setOnClickListener( new
MyListener()); } private
class MyListener
implements OnClickListener{ /** * 当按钮被点击时调用的方法 */ @Override public
void onClick(View v) {
callPhone(); } } } |
接下来我们就需要去实现callPhone()函数了。首先,我们可以判断一下电话号码是否为空,如果为空可以给出提示,Android下的提示通过Toast函数来实现
1
2
3
4
5
|
String number = et_number.getText().toString(); if
(TextUtils.isEmpty(number)) { Toast.makeText(MainActivity. this ,
"号码不能为空" , Toast.LENGTH_SHORT).show(); return ; } |
其中Toast.makeText()有三个参数,第一个为context,这里传递的是MainActivity,第二个参数是提示内容,第三个内容为提示持续的长短时间。分别为Toast.LENGTH_LONG和Toast.LENGTH_SHORT。
接下来我们要传递一个打电话的意图,这里通过Intent来实现:
1
2
3
4
|
Intent intent =
new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse( "tel:" +number)); startActivity(intent); |
其中Intent.ACTION_CALL是一个已经封装好的动作,即拨号,把电话号码字符转化为Uri之后,我们就可以通过开启界面startActivity(intent)完成拨号了。
完整的callPhone()函数如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
private
void callPhone() { // 意图 松耦合
String number = et_number.getText().toString(); if
(TextUtils.isEmpty(number)) { Toast.makeText(MainActivity. this ,
"号码不能为空" ,
0 ).show(); return ; } Intent intent =
new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse( "tel:" +number)); startActivity(intent); } |
但这还没有结束,我们在使用安卓手机安装app时经常会看到警告,说这个app会拥有系统的一些权限,提示我们是否允许。电话拨号器也是一样的,它也需要拥有拨号的权限。
我们打开AndroidManifest.xml文件,选择Permission->UserPermission,Add一个叫CALL_Phone的permission。
然后就可以了,我们可以打开两个模拟器,用一个给另外一个拨号,模拟器中直接拨打端口号5556即可。查看效果:
欢迎转载,请注明出处。
原文:http://blog.csdn.net/u014237185/article/details/44680553