android 拨打电话的程序

本文详细介绍了一款拨打电话程序的界面设计与功能实现,包括按钮样式、布局、权限设置及核心拨号功能。通过XML资源文件定义按钮背景图,使用Intent进行拨号操作,并在AndroidManifest.xml中添加必要的权限。程序提供了数字输入、拨号、删除和取消功能,确保了用户友好的交互体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

编写资源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

2、点击Permission选项栏

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

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

5、选好权限:

6、保存:

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

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

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

这个是拨号的程序

这个是另外启动的模拟器,用来接收拨号程序的拨号请求

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值