欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

电话拨号器

程序员文章站 2024-01-10 21:42:52
...

手机自带了电话拨号器,为什么我们还要开发电话拨号器

1 按照需求,当我们开发个交友程序  要在旁边拨打电话联系 某个人的时候就需要输入电话号码 进行拨打

2  熟悉了解电话拨号器的实现过程,对部分源码进行解读

 

新建android的项目

在主界面布局layout-->main.xml中实现电话拨打的界面

      电话拨打的界面由三部分组成   提示文字:请输入电话号码   输入电话的文本框    拨打按钮组成

代码解释

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="cn.itcast.myphone"
      android:versionCode="1"
      android:versionName="1.0">

 

versioncode 开发应用的版本号  versionName开发应用的版本名字

<application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MianAcitivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

 

android:name=".mainAciivity"表示所对应的activity   .可以省略   当不在包cn.itcast.myphone下 在其子包 .不能省略     label 显示应用的名字  可以任意修改

 

     

 <uses-sdk android:minSdkVersion="8" />

 

这个表示支持的最低sdk的版本

 

Layout--》mian.xml解释

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

 

这个不总做解释  有点编程经验的  都可以看懂

<Button
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="@string/button"
	android:id="@+id/button"
/>

 

这个里面要解释的是android:id="@+id/button"

表示在R文件生成一个静态类,并在静态类中生成一个button的静态常量

 

显示activity的布局界面完成,要给拨打电话的按钮提供id  ,输入电话的文本框也要提供id,供获取电话号码使用

 

在我们创建的MainActivty中就可以通过id获取 按钮

this.findViewById(R.id.Button);

其返回对象为view  我们查看view是个接口,图形组建都实现了view接口 所以我们在这定义成Button

并为button 添加设置事件   button.setOclickListener(..);这个方法里面接受一个OnclickListener 的事件,OnclickListener是个接口,我们编写个内部类实现这个接口并添加未实现的方法onClick   改方法返回的是一个view对象,我们可以想象当我们拨打电话在点击拨打按钮后,是切换到另一个界面即是这边的返回的view.

 

按钮时间有了,我们怎么拨打电话呢  可以查看android自带的拨打电话的源码

platforms\android-8\sources\Phone在这个位置就可以找到 进入应用清单:AndroidMainfest.xml

 <activity android:name="OutgoingCallBroadcaster"
                android:permission="android.permission.CALL_PHONE"
                android:theme="@android:style/Theme.NoDisplay"
                android:configChanges="orientation|keyboardHidden">
            <!-- CALL action intent filters, for the various ways
                 of initiating an outgoing call. -->
            <intent-filter>
                <action android:name="android.intent.action.CALL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="tel" />
            </intent-filter>

 

里面有个意图拦截器,android意图是激活组件的意思。经过分析 我们只要实现android的第一个衣服拦截器中的aciton data  还有category 就可以实现打电话的功能。

在oncreate方法中  创建意图对象 intent  设置其action属性 和 data属性,data里面接受一个uri  在这里我们用强转字符串传入电话号码:uri.parse("tel:"+phonenum); tel拨打电话的协议

category属性我们并可以不显示的设置,当我们调用startAcivity的时候就程序自动设置category属性

部署测试  发现有问题

因为我们安装的程序没有安全提示

 

所以在程序清单中加入安全权限,当安装程序的时候就会有提示,提示用户是否安装

<android:name="android.permission.CALL_PHONE"/>

 

 

查看模拟器的sd卡,在当前用户目录下就可以找到