Android拨打电话的四种实现方式
2015-03-07 14:51
309 查看
第一种:直接在layout的xml文件中给拨号按钮Button一个单机事件android:onClick="call"
xml代码如下:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- 拨打电话界面的布局 --> <!-- 标题:请输入手机号 --> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/title" /> <!-- 号码输入框 --> <EditText android:id="@+id/number" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" android:layout_below="@id/title" /> <!-- 拨打电话的按钮 --> <Button android:id="@+id/btn_call" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/number" android:text="@string/callNumber" android:onClick="call" /> </RelativeLayout>Activity代码如下:
import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.EditText; /** * @author andong * 程序刚运行就显示的界面 */ public class MainUI extends Activity { /** * 当界面刚被创建时回调此方法 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 必须执行此句代码. 执行父类的初始化操作. setContentView(R.layout.main); // 设置当前界面显示的布局:加载布局的xml文件. } /**方法一: * 当拨打此号码的按钮被点击时触发此方法. * main.xml的Button定义了android:onClick="call" , * call的参数必须传入View参数,即你单机的控件 * @param v */ public void call(View v) { System.out.println("拨打电话."); // 1. 取出输入框中的号码 EditText etNumber = (EditText) findViewById(R.id.number); // 输入框对象 String number = etNumber.getText().toString(); // 将要拨打的号码转为数字 // 2. 根据号码拨打电话 Intent intent = new Intent(); // 创建一个意图 intent.setAction(Intent.ACTION_CALL); // 指定其动作为拨打电话 intent.setData(Uri.parse("tel:" + number)); // 指定将要拨出的号码 startActivity(intent); // 执行这个动作 } }
第二种:不在layout的xml中给Button添加onClick事件,而是在Activity中给拨号按钮设置一个onClick监听器,并且以匿名内部类的方式传参;
xml代码(Button去掉onClick事件)如下:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- 拨打电话界面的布局 --> <!-- 标题:请输入手机号 --> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/title" /> <!-- 号码输入框 --> <EditText android:id="@+id/number" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" android:layout_below="@id/title" /> <!-- 拨打电话的按钮 --> <Button android:id="@+id/btn_call" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/number" android:text="@string/callNumber" /> </RelativeLayout>Activity代码如下:
import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; /** * @author andong * 程序刚运行就显示的界面 */ public class MainUI2 extends Activity { /** * 当界面刚被创建时回调此方法 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 必须执行此句代码. 执行父类的初始化操作. setContentView(R.layout.main); // 设置当前界面显示的布局. Button btnCall = (Button) findViewById(R.id.btn_call); /** * 方法二: * 在Activity中给拨号按钮设置一个onClick监听器,并且以匿名内部类的方式传参; */ btnCall.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { System.out.println("MainUI2 拨打电话."); //这里无需再出入View call(); } }); } /** * 拨打电话的业务方法 */ private void call() { // 1. 取出输入框中的号码 EditText etNumber = (EditText) findViewById(R.id.number); // 输入框对象 String number = etNumber.getText().toString(); // 将要拨打的号码 // 2. 根据号码拨打电话 Intent intent = new Intent(); // 创建一个意图 intent.setAction(Intent.ACTION_CALL); // 指定其动作为拨打电话 intent.setData(Uri.parse("tel:" + number)); // 指定将要拨出的号码 startActivity(intent); // 执行这个动作 } }
第三种:不在layout的xml中给Button添加onClick事件,而是在Activity中定义一个成员内部类实现OnClickListener
Activity代码如下:/** * @author andong * 程序刚运行就显示的界面 */ public class MainUI3 extends Activity { /** * 当界面刚被创建时回调此方法 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 必须执行此句代码. 执行父类的初始化操作. setContentView(R.layout.main); // 设置当前界面显示的布局. Button btnCall = (Button) findViewById(R.id.btn_call); //传入定义的成员内部类的实例 btnCall.setOnClickListener(new MyOnClickListener()); } /** * 定义一个成员内部类实现OnClickListener * @author Administrator * */ class MyOnClickListener implements OnClickListener { //重写OnClickListener的onClick方法 @Override public void onClick(View v) { System.out.println("MainUI3 拨打号码.."); call(); } } /** * 拨打电话的业务方法 */ private void call() { // 1. 取出输入框中的号码 EditText etNumber = (EditText) findViewById(R.id.number); // 输入框对象 String number = etNumber.getText().toString(); // 将要拨打的号码 // 2. 根据号码拨打电话 Intent intent = new Intent(); // 创建一个意图 intent.setAction(Intent.ACTION_CALL); // 指定其动作为拨打电话 intent.setData(Uri.parse("tel:" + number)); // 指定将要拨出的号码 startActivity(intent); // 执行这个动作 } }
第四种:不在layout的xml中给Button添加onClick事件,将所定义的Activity直接实现onClickListener
建议大家使用第四种方法activity代码如下:
import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; /** * @author andong * 程序刚运行就显示的界面 * 直接实现OnClickListener */ public class MainUI4 extends Activity implements OnClickListener { /** * 当界面刚被创建时回调此方法 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 必须执行此句代码. 执行父类的初始化操作. setContentView(R.layout.main); // 设置当前界面显示的布局. Button btnCall = (Button) findViewById(R.id.btn_call); //给拨号按钮设置监听器时直接传入当前对象即可 btnCall.setOnClickListener(this); } // class MyOnClickListener implements OnClickListener { // // @Override // public void onClick(View v) { // System.out.println("MainUI3 拨打号码.."); // call(); // } // } /** * 拨打电话的业务方法 */ private void call() { // 1. 取出输入框中的号码 EditText etNumber = (EditText) findViewById(R.id.number); // 输入框对象 String number = etNumber.getText().toString(); // 将要拨打的号码 // 2. 根据号码拨打电话 Intent intent = new Intent(); // 创建一个意图 intent.setAction(Intent.ACTION_CALL); // 指定其动作为拨打电话 intent.setData(Uri.parse("tel:" + number)); // 指定将要拨出的号码 startActivity(intent); // 执行这个动作 } //重写onClickListener的onClick方法 @Override public void onClick(View v) { System.out.println("MainUI4 拨打号码.."); call(); } }
相关文章推荐
- Android实现拨打电话的两种方式
- Android使用am命令实现拨打电话、打开应用
- Android四种存储方式 sharedpreference,file,SQlite,contentprovider实现增删改查
- Android 学习第11课,android 实现拨打电话的功能
- Android中实现定时器的四种方式
- Android中实现定时器的四种方式
- React Native Android 组件IntentAndroid 实现拨打电话
- Android实现监听的四种方式
- Android自定义控件:进度条的四种实现方式
- 在android中实现电话拨打功能
- Android开发——拨打电话的实现
- android 反射方式 实现接、挂电话
- android实现 拿起耳边拨打电话
- Android 实现拨打电话功能
- android实现拨打电话但不弹出拨号界面
- android手机web网站拨打电话几种方式
- Android四种方式实现计时器
- Android笔记之四种方式实现计时器
- Android使用Intent实现拨打电话的动作
- Android 基础 —— 模拟实现拨打电话功能