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

首頁 > 系統 > Android > 正文

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

2019-10-23 18:31:34
字體:
來源:轉載
供稿:網友

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

android,獲取短信驗證碼

1.自定義監聽類

/** * 短信監聽器,用于自動填充驗證碼*/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";//短息發送提供商  private String smsID = "";  //短信觀察者 收到一條短信時 onchange方法會執行兩次,所以比較短信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.在登錄頁面事件化監聽類

//實例化短信監聽器SMSContentObserver mObserver = new SMSContentObserver(getActivity(), new Handler(), mEt_auth_code);// 注冊短信變化監聽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.為了防止內存泄漏,記得注銷監聽

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

小結:

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

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云梦县| 册亨县| 家居| 苏尼特左旗| 通河县| 阿城市| 霍城县| 南溪县| 双城市| 栖霞市| 民和| 南江县| 吴忠市| 大同市| 通化县| 南靖县| 南城县| 汝州市| 徐州市| 平山县| 富顺县| 凌源市| 翁源县| 肥西县| 神农架林区| 永春县| 南漳县| 吴堡县| 酉阳| 元氏县| 古交市| 休宁县| 平潭县| 苍南县| 保德县| 托克逊县| 双城市| 徐州市| 永康市| 崇仁县| 星子县|