andorid 短信监听,自动填充

1、新建一个广播接收器

public class SMSBroadcastReceiver extends BroadcastReceiver {
    private static final String TAG = "SMSBroadcastReceiver";
    private OnReceiveSMSListener mOnReceiveSMSListener;
    public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(SMS_RECEIVED_ACTION)) {
            Object[] pdus = (Object[]) intent.getExtras().get("pdus");
            for (Object pdu : pdus) {
                SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
                // 短信号码
                String sender = smsMessage.getDisplayOriginatingAddress();
                Log.d(TAG, sender + "");
                //短信内容
                String content = smsMessage.getDisplayMessageBody();

                // 根据短信内容筛选
                if (content.contains("lgh") && content.contains("log")){
                    if (mOnReceiveSMSListener!=null){
                        Pattern pattern = Pattern.compile("\\d+");
                        Matcher matcher = pattern.matcher(content);
                        if (matcher.find()) {
                            mOnReceiveSMSListener.onReceived(matcher.group());
                        }
                        abortBroadcast();
                    }

                }
                  /*  // 根据号码筛选
                    if ("136******".equals(sender) && mOnReceiveSMSListener != null) {
                        Pattern pattern = Pattern.compile("\\d+");
                        Matcher matcher = pattern.matcher(content);
                        if (matcher.find()) {
                            mOnReceiveSMSListener.onReceived(matcher.group());
                        }
                        abortBroadcast();
                    }*/
            }
        }

    }

    /**
     * 回调接口
     */
    public interface OnReceiveSMSListener {
        void onReceived(String message);
    }


    public void setOnReceiveSMSListener(OnReceiveSMSListener onReceiveSMSListener) {
        mOnReceiveSMSListener = onReceiveSMSListener;
    }

}

2、在activity中动态设置调用

    private SMSBroadcastReceiver mSMSBroadcastReceiver;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_loading_page);
     

        mSMSBroadcastReceiver=new SMSBroadcastReceiver();
        mSMSBroadcastReceiver.setOnReceiveSMSListener(this);

        // 注册广播
        IntentFilter intentFilter = 
        new IntentFilter(SMSBroadcastReceiver.SMS_RECEIVED_ACTION);

        // 设置优先级
        intentFilter.setPriority(Integer.MAX_VALUE);
        registerReceiver(mSMSBroadcastReceiver,intentFilter);




    }

  @Override
    public void onReceived(String message) {
        edit_code.setText(message);

    }


@Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mSMSBroadcastReceiver);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值