Android 广播获取短信内容

一、创建广播监听短信接收器

public BroadcastReceiver borad = new BroadcastReceiver(){

@Override
public void onReceive(Context context, Intent intent) {
//super.onReceive(context, intent);
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
Log.v(TAG, ">>>>>>>onReceive start");
// 第一步、获取短信的内容和发件人
StringBuilder body = new StringBuilder();// 短信内容
StringBuilder number = new StringBuilder();// 短信发件人
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] _pdus = (Object[]) bundle.get("pdus");
SmsMessage[] message = new SmsMessage[_pdus.length];
for (int i = 0; i < _pdus.length; i++) {
message[i] = SmsMessage
.createFromPdu((byte[]) _pdus[i]);
}
for (SmsMessage currentMessage : message) {
body.append(currentMessage.getDisplayMessageBody());
String curNumber = number.toString();
if (!curNumber.equals(currentMessage
.getDisplayOriginatingAddress()))
number.append(currentMessage
.getDisplayOriginatingAddress());
}
String smsBody = body.toString();
String smsNumber = number.toString();
if (smsNumber.startsWith("+86")) {
smsNumber = smsNumber.substring(3);
}
// 第二步:确认该短信内容是否满足过滤条件
if (smsNumber.equals("11888") || smsNumber.equals("1069030011888"))
Log.v(TAG, "sms_number.equals(11888)" + smsBody);
int index = smsBody.indexOf("您本次操作的验证码为:");
if (index != -1){
String smsCode = smsBody.substring(index + 11,index + 17);
//authCode.setText(smsCode);
Message msg = new Message();
msg.what = SMSCODE_OK;
msg.obj = smsCode;
handler.sendMessage(msg);
}
}
}
Log.v(TAG, ">>>>>>>onReceive end");

}
}
};

二、注册广播

/**
* 注册接收短信广播
*/

private void regeditBroad(Context context){
IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
intentFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
context.registerReceiver(borad, intentFilter);

}

三、Handler操作UI控件

private Handler handler = new Handler(){

public void handleMessage(Message msg) {

switch (msg.what) {
// 自动填充短信验证码
case SMSCODE_OK:
String sms = (String) msg.obj;
System.out.println("截取到短信验证码: " + sms);
if (sms != null && !sms.equals("")) {
authCode.setText(sms);
getSms.setEnabled(true);
getSms.setText(mcontext.getString(R.string.m_hint_obtain));
}
//注销接收短信广播
destoryBroad();
break;

/**
* 销毁短信广播
*/

private void destoryBroad() {

if (borad != null) {
mcontext.unregisterReceiver(borad);
}
}

更多相关文章

  1. android参考--发送短信
  2. Android调用系统发送短信界面
  3. android 中调用接口发送短信
  4. android解锁触发广播
  5. Android之有序广播
  6. android 中调用接口发送短信
  7. 监听android home键的实现方式
  8. Android获取手机本地图片缩略图
  9. Android(安卓)监听短信接收 获取发件号码、短信内容

随机推荐

  1. (20120731)Android中的各种对话框总结(dialo
  2. Android之Handler源码分析(第五篇:移除消
  3. Android的Service深入分析
  4. Binder Android(安卓)IPC Linux 内核 驱
  5. Android(安卓)Material Design: 九种常见
  6. android emulator 通过代理访问web servi
  7. Android(安卓)8.1发送广播受限问题
  8. Android(安卓)Studio签名配置方法
  9. AdapterViewFlipper实现跑马灯横幅广告滚
  10. 【android】handler.post方法的说明和注