在配置文件中添加以下权限

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

new一个新的广播SMSBroadcast

package aviationboss.broadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.os.Message;import android.telephony.SmsMessage;import android.util.Log;import aviationboss.activity.PaymentActivity;/* * 判断是否接收到验证信息,并获取验证码 */public class SMSBroadcast extends BroadcastReceiver {    @Override    public void onReceive(Context arg0, Intent arg1) {        // TODO Auto-generated method stub        Log.i("lwx", "receive sms");        Bundle bundler = arg1.getExtras();//获取所拦截的短信        if(bundler!=null){            StringBuilder body = new StringBuilder();            StringBuilder number = new StringBuilder();            Object[] _pdus = (Object[]) bundler.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 sm:message){                body.append(sm.getDisplayMessageBody());                number.append(sm.getDisplayOriginatingAddress());            }            String bodyStr = body.toString();            String numberStr = number.toString();            Log.i("lwx", "sms body = "+bodyStr);            Log.i("lwx", "sms number = "+numberStr);            if(numberStr.contains("106550101872158437")){//这里判断拦截短信的号码                try{                    int index_1 = bodyStr.indexOf(":");                    int index_2 = bodyStr.indexOf(";");                    String str = bodyStr.substring(index_1+1, index_2).trim();                    Log.i("lwx", "str="+str);                    int count = Integer.parseInt(str);                    if(count>0){                        if(PaymentActivity.handler!=null){                            Message msg = new Message();                            msg.what = 25;                            msg.obj = count;                            PaymentActivity.handler.sendMessage(msg);//将需要的内容发送给activity更新界面                        }                    }                }catch(Exception e){                    e.printStackTrace();                }                            }        }    }}

配置文件中添加改广播,并设置广播拦截的动作

<receiver android:name="aviationboss.broadcast.SMSBroadcast" >      <intent-filter>          <action android:name="android.provider.Telephony.SMS_RECEIVED" />      </intent-filter></receiver>

更多相关文章

  1. Android 权限被拒绝,跳转至权限设置界面
  2. android 程序启动界面的短暂黑屏
  3. Android 权限添加
  4. Android 预置APK的权限授予
  5. Android实现发短信@彩信功能
  6. Android 获取系统权限的代码
  7. a64_7.1android平板关于更改绘制矩形界面透明度

随机推荐

  1. MySQL数据库SQL语法
  2. mysql5.5 允许远程访问
  3. 列出所有行,如果行在其他表中退出,则添加其
  4. [置顶] sqlserver性能调优方法论
  5. [置顶] SQL0668N 原因码为 "1",所
  6. 如何把sql查询出的结果写入到一个表中?
  7. MySQL学习总结----数据操作
  8. 后IOE时代,Mysql 与 Postgre SQL的对比
  9. sql 如何对返回为空值指定值
  10. python操作mysql 抛出Unread result foun