Android学习笔记(1)——电话拨号器

搬运自本人博客:Android学习笔记(1)——电话拨号器


程序的实现过程非常简单,大体分为以下几步:

  • 确定程序的功能,大致确定好UI界面。
  • 通过调整xml文件参数让界面更加美观。
  • 在Activity文件编写代码,完成对应的事件等。

对于电话拨号器,我们最后的界面大致如下:

Android学习笔记(1)——电话拨号器-xge技术博客

对应的布局文件如下,采用的是相对布局。

?
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
< RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
     xmlns:tools = "http://schemas.android.com/tools"
     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。

Android学习笔记(1)——电话拨号器-xge技术博客

然后就可以了,我们可以打开两个模拟器,用一个给另外一个拨号,模拟器中直接拨打端口号5556即可。查看效果:

Android学习笔记(1)——电话拨号器-xge技术博客

欢迎转载,请注明出处。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值