Android(安卓)漫游之路------Android电话拨号器(点击事件的几种写法)、Android短信发送器
---------------------- 路漫漫其修远兮,吾将上下而求索。学无止境!----------------------
Android电话拨号器
按钮的使用,一定会用到点击事件,然而点击事件的有一下几种写法:
1.内部类
2.匿名内部类
3.Activity类实现onClickListener接口
4.在xml定义Button是,添加android:onClick="myClick";,并实现myClick方法。
以下程序模拟了一个电话拨号器。(电话涉及安全操作,一定要在AndroidManifest.xml设置电话权限)
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
activity_main.xml
MainActivity.java
package com.lee.phone;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import android.app.Activity;import android.content.Intent;public class MainActivity extends Activity {private EditText editText;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) this.findViewById(R.id.button);editText = (EditText) this.findViewById(R.id.tel);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubmakeCall(v);}});}// 实现打电话功能的函数public void makeCall(View v) {// 获取EditText的值,并且去除前后的空格String tel = editText.getText().toString().trim();if (TextUtils.isEmpty(tel)) {Toast.makeText(v.getContext(), "请输入电话号码", Toast.LENGTH_LONG).show();return;}// 创建Intent实例Intent intent = new Intent();// 设置Intentintent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:" + tel));// 开启ActivitystartActivity(intent);}}
界面如下:
上述Demo点击事件采用的是匿名内部类的形式实现的,当然也可以使用内部类的形式去实现。但是考虑到以后的开发中会
遇到很多按钮,每一个按钮都要去实现OnClickListener接口,变得十分麻烦。我们可以使用新的方式去解决这个问题!
这种方式在开发中极为常见...
1.使该Activity类实现OnClickListener接口;
2.重写实现接口的onClick方法
3.每个按钮的点击事件可以统一为**.setOnClickListener(this);
4.在onClick方法体中,使用switch语句体根据按钮的id进行分别实现功能。
修改后的MainActivity.java代码
package com.lee.phone;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import android.app.Activity;import android.content.Intent;//继承Activity,还要实现OnClickListener接口public class MainActivity extends Activity implements OnClickListener {private EditText editText;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) this.findViewById(R.id.button);editText = (EditText) this.findViewById(R.id.tel);// setOnClickListener方法的参数为this,因为该类实现了OnClickListener接口button.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {// id为button的Button的点击事件case R.id.button:makeCall(v);break;default:break;}}// 实现打电话功能的函数public void makeCall(View v) {// 获取EditText的值,并且去除前后的空格String tel = editText.getText().toString().trim();if (TextUtils.isEmpty(tel)) {Toast.makeText(v.getContext(), "请输入电话号码", Toast.LENGTH_LONG).show();return;}// 创建Intent实例Intent intent = new Intent();// 设置Intentintent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:" + tel));// 开启ActivitystartActivity(intent);}}
另外还有一种方式,就是在activity_main.xml等布局xml文件中的中,定义一下android:onClick="myClick";
然后在对应的Activity类中定义并实现myClick方法
package com.lee.phone;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import android.app.Activity;import android.content.Intent;public class MainActivity extends Activity {private EditText editText;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) this.findViewById(R.id.button);editText = (EditText) this.findViewById(R.id.tel);// setOnClickListener方法的参数为this,因为该类实现了OnClickListener接口}// 实现对应的方法public void myClick(View view) {makeCall(view);}// 实现打电话功能的函数public void makeCall(View v) {// 获取EditText的值,并且去除前后的空格String tel = editText.getText().toString().trim();if (TextUtils.isEmpty(tel)) {Toast.makeText(v.getContext(), "请输入电话号码", Toast.LENGTH_LONG).show();return;}// 创建Intent实例Intent intent = new Intent();// 设置Intentintent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:" + tel));// 开启ActivitystartActivity(intent);}}
Android短信发送器
package com.lee.msg;import java.util.ArrayList;import android.os.Bundle;import android.telephony.SmsManager;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.app.Activity;public class MainActivity extends Activity implements OnClickListener {private EditText editTextTel;private EditText editTextMsg;private Button buttonSend;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);editTextTel = (EditText) this.findViewById(R.id.et_tel);editTextMsg = (EditText) this.findViewById(R.id.et_con);buttonSend = (Button) this.findViewById(R.id.btn_send);buttonSend.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.btn_send://调用短信发送方法sendMsg();break;}}//短信发送功能public void sendMsg() {//SmsManager的获取SmsManager smsManager = SmsManager.getDefault();//得到文本文件String text = editTextMsg.getText().toString().trim();//得到电话号码String tel = editTextTel.getText().toString().trim();//将短信系分解成多条符合规定长度的短信ArrayList texts = smsManager.divideMessage(text);//一次遍历发送for (String content : texts)smsManager.sendTextMessage(tel, null, content, null, null);}}
发送短信也涉及到了安全问题,要在AndroidManifest.xml中加入
---------------------- 路漫漫其修远兮,吾将上下而求索。学无止境!----------------------
我的博客:http://blog.csdn.net/helloxiaobi
更多相关文章
- EventBus 《二》 Android(安卓)EventBus的简单使用
- Android相对布局实现各种梅花效果
- Android当中layer-list使用来实现多个图层堆叠到一块儿
- Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面
- Android中RemoteViews的实现
- Android更新Ui进阶精解(二)
- Android(安卓)面试题总结之Android(安卓)基础(四)
- Android设置颜色的几种方法
- Android中RemoteViews的实现