android 拨打电话的程序

这章是一篇拨打电话的程序,这个功能的实现主要由Intent的URI和权限完成,下面就来看一下设计的界面吧!

android 拨打电话的程序_第1张图片

首先,我们先来了解一下这个项目结构

android 拨打电话的程序_第2张图片

编写资源xml

1、在res/drawable-mdpi中有文件myselector_del.xml,该文件用于设置“删除”按钮的背景图,代码如下所示

<?xml version="1.0" encoding="utf-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
  <item
   android:state_pressed="false"
   android:drawable="@drawable/del"/>
  <item
   android:state_pressed="true"
   android:drawable="@drawable/deldown"/>
</selector>

2、在res/drawable-mdpi中有文件myselector_cancel.xml,该文件用于设置“取消”或者“退出”拨号程序按钮的背景图,代码如下所示

<?xml version="1.0" encoding="utf-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
  <item
   android:state_pressed="false"
   android:drawable="@drawable/dialcancel"/>
  <item
   android:state_pressed="true"
   android:drawable="@drawable/dialcanceldown"/>
</selector>

3、在res/drawable-mdpi中有文件myselector_dial.xml,该文件用于设置“拨号”按钮的背景图,代码如下所示

<?xml version="1.0" encoding="utf-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
  <item
   android:state_pressed="false"
   android:drawable="@drawable/dial"/>
  <item
   android:state_pressed="true"
   android:drawable="@drawable/dialdown"/>
</selector>

4、在res/drawable-mdpi中有文件myselector_num.xml,该文件用于设置“数字”按钮的背景图,代码如下所示

<?xml version="1.0" encoding="utf-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
  <item
   android:state_pressed="false"
   android:drawable="@drawable/numback"/>
  <item
   android:state_pressed="true"
   android:drawable="@drawable/numbackdown"/>
</selector>

5、在res/values中有color.xml,该文件是颜色资源文件,代码如下所示

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#fd8d8d</color>  <!-- 红色 -->
 <color name="green">#9cfda3</color> <!-- 绿色 -->
 <color name="blue">#8d9dfd</color> <!-- 蓝色 -->
 <color name="white">#FFFFFF</color> <!-- 白色 -->
 <color name="black">#000000</color> <!-- 黑色 -->
</resources>

 

main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
   <LinearLayout
  android:id="@+id/LinearLayout06"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
    <EditText
   android:text="@string/default_number"
   android:id="@+id/EditText01"
   android:layout_width="260dip"
   android:textSize="24dip"
   android:editable="false"
   android:enabled="false"
   android:singleLine="true"
   android:background="@color/white"
   android:textColor="@color/black"
   android:layout_marginRight="6dip"
   android:layout_marginLeft="10dip"
   android:layout_height="wrap_content"/>
    <Button
   android:text=" "
   android:id="@+id/Button_del"
   android:textSize="24dip"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/myselector_del"/>
   </LinearLayout>
   <LinearLayout
  android:id="@+id/LinearLayout01"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
    <LinearLayout
  android:id="@+id/LinearLayout02"
  android:orientation="horizontal"
  android:gravity="center_horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
      <Button
   android:text="1"
   android:id="@+id/Button01"
   android:textSize="54dip"
   android:textStyle="bold"
   android:typeface="serif"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/myselector_num"/>
      <Button
   android:text="2"
   android:id="@+id/Button02"
   android:textSize="54dip"
   android:textStyle="bold"
   android:typeface="serif"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_marginLeft="20dip"
   android:layout_marginRight="20dip"
   android:background="@drawable/myselector_num"/>
      <Button
   android:text="3"
   android:id="@+id/Button03"
   android:textSize="54dip"
   android:textStyle="bold"
   android:typeface="serif"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/myselector_num"/>
    </LinearLayout>
    <LinearLayout
  android:id="@+id/LinearLayout03"
  android:orientation="horizontal"
  android:gravity="center_horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="20dip">
  <Button
   android:text="4"
   android:id="@+id/Button04"
   android:textSize="54dip"
   android:textStyle="bold"
   android:typeface="serif"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/myselector_num"/>
  <Button
   android:text="5"
   android:id="@+id/Button05"
   android:textSize="54dip"
   android:textStyle="bold"
   android:typeface="serif"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_marginLeft="20dip"
   android:layout_marginRight="20dip"
   android:background="@drawable/myselector_num"/>
  <Button
   android:text="6"
   android:id="@+id/Button06"
   android:textSize="54dip"
   android:textStyle="bold"
   android:typeface="serif"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/myselector_num"/>           
    </LinearLayout>
    <LinearLayout
  android:id="@+id/LinearLayout04"
  android:orientation="horizontal"
  android:gravity="center_horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="20dip">
  <Button
   android:text="7"
   android:id="@+id/Button07"
   android:textSize="54dip"
   android:textStyle="bold"
   android:typeface="serif"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/myselector_num"/>
  <Button
   android:text="8"
   android:id="@+id/Button08"
   android:textSize="54dip"
   android:textStyle="bold"
   android:typeface="serif"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_marginLeft="20dip"
   android:layout_marginRight="20dip"
   android:background="@drawable/myselector_num"/>
  <Button
   android:text="9"
   android:id="@+id/Button09"
   android:textSize="54dip"
   android:textStyle="bold"
   android:typeface="serif"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/myselector_num"/>         
    </LinearLayout>
    <LinearLayout
  android:id="@+id/LinearLayout05"
  android:orientation="horizontal"
  android:gravity="center_horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="20dip">
  <Button
   android:text=" "
   android:id="@+id/Button_dial"
   android:textSize="54dip"
   android:textStyle="bold"
   android:typeface="serif"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/myselector_dial"/>
  <Button
   android:text="0"
   android:id="@+id/Button00"
   android:textSize="54dip"
   android:textStyle="bold"
   android:typeface="serif"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_marginLeft="20dip"
   android:layout_marginRight="20dip"
   android:background="@drawable/myselector_num"/>
  <Button
   android:text=" "
   android:id="@+id/Button_cancel"
   android:textSize="54dip"
   android:textStyle="bold"
   android:typeface="serif"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/myselector_cancel"/>
  </LinearLayout>
 </LinearLayout>
</LinearLayout>

 

java代码:

package com.MyDialing;
import com.Sample_11_5.R;

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 MyDialing extends Activity {
 int[] numButtonIds={//数字按钮的ID数组
     R.id.Button00,R.id.Button01,R.id.Button02,   
     R.id.Button03,R.id.Button04,R.id.Button05,
     R.id.Button06,R.id.Button07,R.id.Button08,
     R.id.Button09
    };
    public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button bDel=(Button)this.findViewById(R.id.Button_del);
        bDel.setOnClickListener(//为删除按钮添加监听器
                //OnClickListener为View的内部接口,其实现者负责监听鼠标点击事件
                new View.OnClickListener(){
                 public void onClick(View v){
      EditText et=(EditText)findViewById(R.id.EditText01);
      String num=et.getText().toString();
      num=(num.length()>1)?num.substring(0,num.length()-1):"";
      et.setText(num);//组织字符创
                 }
        });  
        Button bDial=(Button)this.findViewById(R.id.Button_dial);
        bDial.setOnClickListener(//为拨号按钮添加监听器
                //OnClickListener为View的内部接口,其实现者负责监听鼠标点击事件
                new View.OnClickListener(){
                 public void onClick(View v){
                  //获取输入的电话号码
                  EditText et=(EditText)findViewById(R.id.EditText01);
                  String num=et.getText().toString();
                  //根据获取的电话号码创建Intent拨号
                  Intent dial = new Intent();
                  dial.setAction("android.intent.action.CALL");
                  dial.setData(Uri.parse("tel://"+num));
                  startActivity(dial);  //激活打电话的Activity
                 }
                }
        );   
        Button bCancel=(Button)this.findViewById(R.id.Button_cancel);
        bCancel.setOnClickListener(//为退出按钮添加监听器
                //OnClickListener为View的内部接口,其实现者负责监听鼠标点击事件
         new View.OnClickListener(){
          public void onClick(View v){
           MyDialing.this.finish();//是否窗口
          }
         }
        );   
        View.OnClickListener numListener=new  View.OnClickListener(){
         public void onClick(View v){ //为0-9数字按钮创建监听器
          Button tempb=(Button)v;//得到按钮的引用
          EditText et=(EditText)findViewById(R.id.EditText01);//得到EditText的引用
          et.append(tempb.getText());//组织字符串
            }
        };
        for(int id:numButtonIds){//为所有数字按钮添加监听器
         Button tempb=(Button)this.findViewById(id);//得到按钮
         tempb.setOnClickListener(numListener);//添加监听
        }
    }
}

最后可别忘记添加权限哦!

(我突然在网上发现了一个添加用户权限的好方法,不会出错的,大笑

1、首先,打开AndroidManifest.xml

android 拨打电话的程序_第3张图片

2、点击Permission选项栏

3、点击Add...按钮,会出现如下:

android 拨打电话的程序_第4张图片

4、根据你的需要来做选择,现在我需要Uses Permission用户权限,然后:

5、选好权限:

6、保存:

android 拨打电话的程序_第5张图片

界面就会变的这样,再看看xml文件是怎么样的

红色框里是在你选择自后自动生成的,这样我的权限设置就基本完成了

现在我们来看看运行结果,但是在看运行结果之前,我们还需要另外启动另一个模拟器来测试

android 拨打电话的程序_第6张图片这个是拨号的程序

android 拨打电话的程序_第7张图片这个是另外启动的模拟器,用来接收拨号程序的拨号请求

 

 

那这一章也先这样了吐舌头

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(android 拨打电话的程序)