zoukankan      html  css  js  c++  java
  • Android自动填写获取到的验证码

    Android需要添加的相关权限

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

    相关的代码:

      1 package com.dongdongsongcan.app;
      2 
      3 import android.content.BroadcastReceiver;
      4 import android.content.Context;
      5 import android.content.Intent;
      6 import android.telephony.SmsMessage;
      7 
      8 import com.su.dolphin.utils.LogUtil;
      9 
     10 import java.util.ArrayList;
     11 import java.util.List;
     12 import java.util.regex.Matcher;
     13 import java.util.regex.Pattern;
     14 
     15 public class SMSReceiver extends BroadcastReceiver
     16 
     17 {
     18 
     19     public interface ISMSListener {
     20         public void onSmsReceive(String verifyCode);
     21     }
     22 
     23     private static ISMSListener mSMSListener;
     24 
     25     public SMSReceiver(ISMSListener ismsListener) {
     26         mSMSListener = ismsListener;
     27     }
     28 
     29     public static final String TAG = "ImiChatSMSReceiver";
     30 
     31     //android.provider.Telephony.Sms.Intents
     32 
     33     public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
     34 
     35 
     36     @Override
     37 
     38     public void onReceive(Context context, Intent intent)
     39 
     40     {
     41         LogUtil.d(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
     42         if (intent.getAction().equals(SMS_RECEIVED_ACTION))
     43 
     44         {
     45 
     46             SmsMessage[] messages = getMessagesFromIntent(intent);
     47 
     48             for (SmsMessage message : messages)
     49 
     50             {
     51 
     52 //                LogUtil.d(message.getOriginatingAddress() + " : " +
     53 //
     54 //                        message.getDisplayOriginatingAddress() + " : " +
     55 //
     56 //                        message.getDisplayMessageBody() + " : " +
     57 //
     58 //                        message.getTimestampMillis());
     59 
     60 
     61                 String msg = message.getDisplayMessageBody();
     62                 LogUtil.d("MSG: " + msg);
     63                 String verifyCode = null;
     64                 Pattern p = Pattern.compile("\d{4}");
     65                 Matcher m = p.matcher(msg);
     66                 while (m.find()) {
     67                     verifyCode = m.group();
     68                     break;
     69                 }
     70                 LogUtil.d("verifyCode " + verifyCode);
     71                 if (mSMSListener != null) {
     72                     mSMSListener.onSmsReceive(verifyCode);
     73                 }
     74             }
     75 
     76         }
     77 
     78     }
     79 
     80 
     81     public final SmsMessage[] getMessagesFromIntent(Intent intent)
     82 
     83     {
     84 
     85         Object[] messages = (Object[]) intent.getSerializableExtra("pdus");
     86 
     87         byte[][] pduObjs = new byte[messages.length][];
     88 
     89 
     90         for (int i = 0; i < messages.length; i++)
     91 
     92         {
     93 
     94             pduObjs[i] = (byte[]) messages[i];
     95 
     96         }
     97 
     98         byte[][] pdus = new byte[pduObjs.length][];
     99 
    100         int pduCount = pdus.length;
    101 
    102         SmsMessage[] msgs = new SmsMessage[pduCount];
    103 
    104         for (int i = 0; i < pduCount; i++)
    105 
    106         {
    107 
    108             pdus[i] = pduObjs[i];
    109 
    110             msgs[i] = SmsMessage.createFromPdu(pdus[i]);
    111 
    112         }
    113 
    114         return msgs;
    115 
    116     }
    117 
    118 
    119 }
  • 相关阅读:
    vs2019编译错误:Exception Processing Message 0xc0000005 Parameters...
    error LNK2001
    Debug Assertion Failed
    对路径“………………”的访问被拒绝
    c语言打开文件为什么总是以二进制方式打开
    关于typedef的用法总结
    xml学习第一天
    关于VS2017编译成功系统找不到指定文件.exe的问题
    引入的外部js文件在html文件在浏览器中乱码显示
    结对作业(四则运算)
  • 原文地址:https://www.cnblogs.com/lr393993507/p/5702732.html
Copyright © 2011-2022 走看看