`
java-mans
  • 浏览: 11416149 次
文章分类
社区版块
存档分类
最新评论

android程序实现简单拨号器功能

 
阅读更多

学习android已经有2天时间了,没学习的时候觉得android可能很枯燥,但是学过之后我发觉其实这个比什么javaweb好玩多了。学习android可以见到一些很有趣的东西,这里呢也建议学习javaME的人不要在煎熬了,学习android吧。在写程序之前也需要知道android的工作原理

1.获取组件清单

2.登记或注册组件

3.将组件封装成意图

4.把意图交给意图处理器进行处理

5.把界面显示给用户

看过网上android的开发流程,好多人都说可以把界面和activity并行开发,因为android也是遵循mvc设计模式,也就是说android也可有自己的业务层DAO。由于android发展历史比较短,目前的分工还不是很明确,对于界面和后台可以选择其中一个作为自己的发展方向,对于android的任何一块来说薪水都比较高。废话就不多说了,来一步一步的实现功能吧。

1.编写“文字”的配置文件,默认的配置文件是strings.xml,这里也可以重新写一个配置文件,格式要保持一致就来写这个配置文件(mystring.xml)吧

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="tip">输入号码</string>
   <string name="bottonname">拨打</string>
</resources>

2.编写控件

<?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"> <!-- 线性布局 -->
	
	<TextView android:layout_width="fill_parent"
		android:layout_height="wrap_content" 
		android:text="@string/tip" />  
		
	<EditText android:layout_width="fill_parent"    
		android:layout_height="wrap_content" 
		android:id="@+id/phonenumber"/>   <!-- 显示一个文本框 id为phonenumber-->
		
	<Button android:layout_width="wrap_content"   
		android:layout_height="wrap_content" 
		android:text="@string/bottonname" 
		android:id="@+id/botton"
		/>    <!-- 显示一个按钮 -->
</LinearLayout>

为了让大家看的更清楚,我把R文件的内容也给大家

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found.  It
 * should not be modified by hand.
 */

package org.lxh.phone;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class id {
        public static final int botton=0x7f050001;
        public static final int phonenumber=0x7f050000;
    }
    public static final class layout {
        public static final int main=0x7f030000;
    }
    public static final class string {
        public static final int app_name=0x7f040003;
        public static final int bottonname=0x7f040001;
        public static final int hello=0x7f040002;
        public static final int tip=0x7f040000;
    }
}

3.编写activity

package org.lxh.phone;

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 PhoneActivity extends Activity {
	 private EditText edit;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        edit=(EditText)this.findViewById(R.id.phonenumber);   //通过id取得文本输入框
        Button but=(Button)this.findViewById(R.id.botton);    //通过id取得按钮
        but.setOnClickListener(new MyListener());  //给按钮添加监听器
    }
    public final class MyListener implements View.OnClickListener{    //自定义的监听器

		
		public void onClick(View v) {
			//实例化一个意图(动作),用来拨打电话
			Intent intent=new Intent("android.intent.action.CALL",Uri.parse("tel:"+edit.getText().toString()));  
			startActivity(intent);  //封装一个意图
			
		}
    	
    }
}

上面是内部类的写法,也可以使用下面的写法

package org.lxh.activity;

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 CallPhoneActivity extends Activity {
    private EditText edittext;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //取得输入框和按钮
        edittext=(EditText)this.findViewById(R.id.phonenum);
        Button but=(Button)this.findViewById(R.id.button);
        but.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				String number=edittext.getText().toString();
				//封装一个意图,用来拨打电话
				Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+number));
				startActivity(intent);
			}
		});
    }
}


开发的时候要注意Uri.parse不能少,tel:也不能少,少了就会出错

这里要实现这个功能,首先要来看一下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>
            <intent-filter>
                <action android:name="android.intent.action.CALL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="voicemail" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CALL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/phone" />
                <data android:mimeType="vnd.android.cursor.item/phone_v2" />
                <data android:mimeType="vnd.android.cursor.item/person" />
            </intent-filter>
        </activity>

这里只需要看第一个filter,这里只需使用2条,那个默认的不用我们去管,另外这个也是需要获得打电话的许可的,所以在组件清单里要加一点东西,如下所示

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="org.lxh.phone"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".PhoneActivity"
                  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>
    <uses-sdk android:minSdkVersion="7" />
    <uses-permission android:name="android.permission.CALL_PHONE"/>
</manifest> 

准备工作差不多做好了,来测试一下吧,这里为了测试方便,我弄了2个虚拟手机


电话打通了



这个比较好玩吧,至于那个应用图标自己可以换成喜欢的,我就不改了

现在把那个strings.xml配置文件给大家

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, PhoneActivity!</string>
    <string name="app_name">我的手机拨号器</string>
</resources>

OK了,程序写好了,大家也去练习一下吧。有问题大家就丢板砖,我也是初学者。

分享到:
评论

相关推荐

    android实现简单的拨号功能

    这是一个实现android手机拨号功能的程序,已经通过测试了代码没有问题。

    Android编程简单实现拨号器功能的方法

    本文实例讲述了Android编程简单实现拨号器功能的方法。分享给大家供大家参考,具体如下: 学习Android已经有2天时间了,没学习的时候觉得android可能很枯燥,但是学过之后我发觉其实这个比什么javaweb好玩多了。学习...

    【Android】Android开发初学者实现拨打电话的功能,拨打电话app应用,电话拨号器

    调用拨打电话程序示例源代码,android实现,下载导包,开发者模式打开安装,就能用,界面效果:直接跳转到拨号界面。 好啦,本文到这里就结束啦,很简单的一个Demo有需要的朋友拿去自行修改,我这里没有用UI就没有写UI...

    Android开发应用实战详解源代码

    第1章 androi简介 ...8.11 远程下载安装android程序 8.11.1 apk简介 8.11.2 下载apk程序 8.11.3 安装apk程序 8.11.4 移除apk程序 8.11.5 本实例原理 8.11.6 具体实现 8.12 下载并观看视频 8.13 小结

    Google Android SDK开发范例大全(第3版) 1/5

    8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 8.19 网络语音搜索 8.20 网络下载过程中显示加载中 8.21 快照WebView加载的...

    《Google Android SDK开发范例大全(第3版)》.pdf

    8.14 远程下载安装android程序 560 8.15 手机下载看3gp影片 566 8.16 访问网站login api 573 8.17 地震速报 578 8.18 通过web api动态更改手机spinner控件 587 8.19 网络语音搜索 590 8.20 网络...

    Google Android SDK开发范例大全(第3版) 4/5

    8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 8.19 网络语音搜索 8.20 网络下载过程中显示加载中 8.21 快照WebView加载的...

    Google Android SDK开发范例大全(第3版) 3/5

    8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 8.19 网络语音搜索 8.20 网络下载过程中显示加载中 8.21 快照WebView加载的...

    Google Android SDK开发范例大全(第3版) 5/5

    8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 8.19 网络语音搜索 8.20 网络下载过程中显示加载中 8.21 快照WebView加载的...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    8.14 远程下载安装Android程序——APKInstaller的应用 8.15 手机下载看3gp影片——Runnable混搭SurfaceView 8.16 访问网站LoginAPI——远程服务器验证程序运行权限 8.17 地震速报!——HttpURLConnection与Service...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    8.14 远程下载安装Android程序——APKInstaller的应用 8.15 手机下载看3gp影片——Runnable混搭SurfaceView 8.16 访问网站LoginAPI——远程服务器验证程序运行权限 8.17 地震速报!——HttpURLConnection与Service...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    8.14 远程下载安装Android程序——APKInstaller的应用 8.15 手机下载看3gp影片——Runnable混搭SurfaceView 8.16 访问网站LoginAPI——远程服务器验证程序运行权限 8.17 地震速报!——HttpURLConnection与Service...

    Google Android SDK开发范例大全(第3版)part2

     8.14 远程下载安装Android程序  8.15 手机下载看3gp影片  8.16 访问网站Login API  8.17 地震速报  8.18 通过Web API动态更改手机Spinner控件  8.19 网络语音搜索  8.20 网络下载过程中显示加载中  ...

    android开发实例大全_王东华

    第13章 Android程序优化 547 实例133: 测试计算机的性能 547 实例134: 测试内存性能 550 实例135: 优化Android模拟器 553 实例136: 使用merge标签优化UI界面 556 实例137: 优化Android Layout 559 实例138: ...

    Google Android SDK开发范例大全的目录

    8.14 远程下载安装Android程序——APKInstaller的应用 8.15 手机下载看3gp影片——Runnable混搭SurfaceView 8.16 访问网站LoginAPI——远程服务器验证程序运行权限 8.17 地震速报!——HttpURLConnection与Service...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    8.14 远程下载安装Android程序——APKInstaller的应用 8.15 手机下载看3gp影片——Runnable混搭SurfaceView 8.16 访问网站LoginAPI——远程服务器验证程序运行权限 8.17 地震速报!——HttpURLConnection与...

Global site tag (gtag.js) - Google Analytics