android 自动获取手机验证码

真的很奇怪大家的复制粘贴功能,一篇自动获取手机验证码的文章各大平台争相转发,我以为很牛逼,到后来发现不能用,可能我技术不够吧,复制粘贴还不到家。

android 自动获取手机验证码好处 :① 用户不用自动输入, 方便操作
② 防止用户在别的手机上登录,保证一手机只能一个号

言归正传

先创建继承于ContentObserver的子类,用于监听信息数据库发生变化,有信息来就立马截取。

public class SMSContentObserver extends ContentObserver {
   
    private static String TAG = "SMSContentObserver";
    private String patternCoder = "\\d{5}";     //正则表达式
    private String strContent;                  //验证码内容
    private Context mContext  ;
    private Handler mHandler ;   				  //更新UI线程

    private String TELPHONE = "TMRTXMIN"; // 短信来源号码
    private String TelPHONECONTEXT ="iViralLink"; // 短信内容 特殊关键字

//    8448631136
    public SMSContentObserver(Context context, Handler handler) {
   
        super(handler);
        mContext = context ;
        mHandler = handler ;
    }
    /**
     * 当所监听的Uri发生改变时,就会回调此方法
     *
     * @param selfChange  此值意义不大 一般情况下该回调值false
     */
    @Override
    public void onChange(boolean selfChange){
   
        Log.i(TAG, "the sms table has changed");
        //查询收件箱里的内容
        Uri outSMSUri = Uri.parse("content://sms/inbox") ;
        Cursor c = mContext.getContentResolver().query(outSMSUri, null, null, null,"date desc");
        if(c != null){
   
            Log.i(TAG, "the number of send is "+c.getCount()) ;
            StringBuilder sb = new StringBuilder() ;
            c.moveToNext();
            String message = c.getString(c.getColumnIndex("body"));      // 短信内容
            String phone = c.getString(c.getColumnIndex("address"));	   //短信来源号码
            Log.i(TAG,"message : "+message);
            Log.i(TAG,"phone : "+phone);
            c.close();
            if(checkPhone(phone) &&checkString(message)){
   
                String code = patternCode(message);
                assert code != null;
                if(!TextUtils.isEmpty(code) ){
   
                    strContent = code;
                }
                mHandler.obtainMessage(1, sb.toString()).sendToTarget();
            }
        }
    }

    //指定一个号码,只读取与他有关的新消息。
    private boolean checkPhone(String phone) {
   
        // TODO Auto-generated method stub
        String c_phone = TELPHONE;
        if(c_phone.equals(phone
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值