android小功能实现之拨打电话

新建一个Android工程。

一 布局

打开main.xml修改内容如下:

<TextView
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text="@string/mobile"
	/>  

<EditText
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:inputType="text"
	android:id="@+id/mobile"
	/>

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

如图:

二 定义字符串

打开strings.xml添加内容如下:

<string name="mobile">请输入手机号</string>
<string name="button">拨号</string>

三 响应点击事件

1 方法一(推荐)

打开MainActivity.java,在onCreate函数中添加如下代码:

public void onCreate(Bundle savedInstanceState){
	super.onCreate(savedInstanceState);
	setContentView(R.layout.main);

	Button button = (Button) this.findViewById(R.button);
	button.setOnClickListener(new ButtonClickListener());
}

定义一个内部类,来实现回调对象:

private final class ButtonClick implements View.OnClickListener{
	public void onClick(View v){
		EditText text = (EditText) findViewById(R.id.mobile);
		String num = text.getText().toString();
		Intent intent = new Intent();
		intent.setAction("android.intent.action.CALL");
		intent.setData(Uri.parse("tel:"+num));
		startActivity(intent);
	}
}

内部类减少了文件的加载,提高了虚拟机加载软件的速度。

2 方法二

public void onCreate(Bundle savedInstanceState){
	super.onCreate(savedInstanceState);
	setContentView(R.layout.main);

	Button button = (Button) this.findViewById(R.button);
	button.setOnClickListener(new View.OnClickListener(){
		public void onClick(View v){
			EditText text = (EditText) findViewById(R.id.mobile);
			String num = text.getText().toString();
			Intent intent = new Intent();
			intent.setAction("android.intent.action.CALL");
			intent.setData(Uri.parse("tel:"+num));
			startActivity(intent);
		}
	});
}

四 添加权限

在Manifest.xml中添加权限:

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

五 优化

每次点击按钮,就会执行onClick,都会执行这句代码:

EditText text = (EditText) findViewById(R.id.mobile);

来查找控件,查找很耗资源,所以我们可以将这句放在onCreate中,只执行一次。

时间: 2024-10-11 19:27:20

android小功能实现之拨打电话的相关文章

Android使用am命令实现拨打电话、打开应用

前提: 在Android 通话自动化测试中会用到am命令去拨打电话.打开音乐播放器播放音乐等等操作.这里总结一下am命令. Android am命令: (1)命令参数: am start -n 包名(package)/包名.活动(activity)名称 其实启动的方法可以从应用的AndroidManifest.xml文件中找到,然而并无什么卵用. (2)举例: a)启动Music.视频: am start -n com.android.music/com.android.music.VideoB

android小功能实现之简单数据持久化保存(SharedPreferences)

为了保存一些简单的配置,类似iOS的NSUserDefault和cocos2dx的CCUserDefault,Android提供了SharedPreferences. 一 布局 先看效果图: 打开main.xml修改内容如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andr

android小功能实现之文件读写

新建一个Android工程. 一 布局 先看效果图: 打开main.xml修改内容如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_wid

android小功能实现之xml文件解析(Pull)

android解析XML常见的有三种Pull.SAX.Dom三种方式. 最常使用是Pull,Android工程本身解析XML也是用的Pull. Pull是一个开源项目,其官方网站是:http://xmlpull.org/. 在Android工程中已经集成了Pull项目,可以直接使用. 新建一个Android工程. 一 添加测试文件 在res目录下新建一个raw文件夹,在其中添加文件persons.xml, 内容如下: <?xml version="1.0" encoding=&q

android小功能实现之SQLite数据库的基本操作

 创建一个Android工程 一 新建数据库 1 新建一个类DBOpenHelper 内容如下: import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelpe

Android小功能实现-sim卡读取,发短信,播放音乐

1.读取sim卡信息 private TelephonyManager tm; tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); String sim = tm.getSimSerialNumber(); 需要TelephonyManager 加权限 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 2.发短信 S

Android -- 小功能 仿美图秀秀(美颜相机)马赛克功能

前言: 之前公司有需求,需要对图片进行编辑,功能参照美图秀秀(或者美颜相机)的功能(带手指触动预览图功能.带放大缩小实施涂鸦功能),上网找了一堆源码,发现没有类似的,只能自己写 实现思路: 见源码,下载地址:点击打开链接 截图:

Android小功能之垂直滚动条

1 <?xml version="1.0" encoding="utf-8"?> 2 <ScrollView 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 and

android小功能实现之发送短信

新建一个Android工程. 一 布局 打开main.xml修改内容如下: <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/number" /> <EditText android:layout_width="fill_parent" android: