国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android自動獲取短信驗證碼功能

2019-12-12 03:06:42
字體:
來源:轉載
供稿:網(wǎng)友

先給大家展示下效果圖,如果大家感覺不錯,請參考實現(xiàn)代碼。

1.自定義監(jiān)聽類

/** * 短信監(jiān)聽器,用于自動填充驗證碼*/public class SMSContentObserver extends ContentObserver {  public final String SMS_URI_INBOX = "content://sms/inbox";//收信箱  private Activity activity = null;  private String smsContent = "";//驗證碼  private EditText verifyText = null;//驗證碼編輯框  private String SMS_ADDRESS_PRNUMBER = "10690329013589";//短息發(fā)送提供商  private String smsID = "";  //短信觀察者 收到一條短信時 onchange方法會執(zhí)行兩次,所以比較短信id,如果一致則不處理  public SMSContentObserver(Activity activity, Handler handler, EditText verifyText) {    super(handler);    this.activity = activity;    this.verifyText = verifyText;  }  @Override  public void onChange(boolean selfChange) {    super.onChange(selfChange);    Cursor cursor = null;// 光標    // 讀取收件箱中指定號碼的短信    cursor = activity.getContentResolver().query(Uri.parse(SMS_URI_INBOX),      new String[]{"_id", "address", "body", "read"}, //要讀取的屬性      "address=? and read=?", //查詢條件是什么      new String[]{SMS_ADDRESS_PRNUMBER, "0"},//查詢條件賦值      "date desc");//排序    if (cursor != null) {      cursor.moveToFirst();      if (cursor.moveToFirst()) {        //比較和上次接收到短信的ID是否相等        if (!smsID.equals(cursor.getString(cursor.getColumnIndex("_id")))) {          String smsbody = cursor.getString(cursor.getColumnIndex("body"));          //用正則表達式匹配驗證碼          Pattern pattern = Pattern.compile("[0-9]{6}");          Matcher matcher = pattern.matcher(smsbody);          if (matcher.find()) {//匹配到6位的驗證碼            smsContent = matcher.group();            if (verifyText != null && null != smsContent && !"".equals(smsContent)) {              verifyText.requestFocus();//獲取焦點              verifyText.setText(smsContent);//設置文本              verifyText.setSelection(smsContent.length());//設置光標位置            }          }          smsID = cursor.getString(cursor.getColumnIndex("_id"));        }      }    }  }}

2.在登錄頁面事件化監(jiān)聽類

//實例化短信監(jiān)聽器SMSContentObserver mObserver = new SMSContentObserver(getActivity(), new Handler(), mEt_auth_code);// 注冊短信變化監(jiān)聽mContext.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, mObserver);

3.聲明讀取短信權限

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

4.為了防止內(nèi)存泄漏,記得注銷監(jiān)聽

@Overridepublic void onDestroy() {super.onDestroy();  //注銷短信監(jiān)聽     mContext.getContentResolver().unregisterContentObserver(mObserver);} 

小結:

去短信庫獲取短信比較不容易被攔截

以上所述是小編給大家介紹的Android自動獲取短信驗證碼功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 楚雄市| 汉寿县| 海口市| 运城市| 五指山市| 兴业县| 安义县| 青海省| 柳江县| 夏河县| 岳普湖县| 潍坊市| 桓台县| 黔西县| 蓬安县| 达州市| 巴林右旗| 本溪市| 肃宁县| 格尔木市| 新野县| 墨竹工卡县| 绥江县| 肥城市| 视频| 方正县| 滕州市| 梁山县| 安泽县| 东至县| 阿城市| 宾川县| 香格里拉县| 南康市| 文安县| 宜昌市| 兰溪市| 百色市| 云安县| 来宾市| 谢通门县|