真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android自動(dòng)獲取短信驗(yàn)證碼功能

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

創(chuàng)新互聯(lián)建站長期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為西鄉(xiāng)塘企業(yè)提供專業(yè)的網(wǎng)站制作、網(wǎng)站建設(shè),西鄉(xiāng)塘網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

Android自動(dòng)獲取短信驗(yàn)證碼功能

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

/**
 * 短信監(jiān)聽器,用于自動(dòng)填充驗(yàn)證碼
*/
public class SMSContentObserver extends ContentObserver {
  public final String SMS_URI_INBOX = "content://sms/inbox";//收信箱
  private Activity activity = null;
  private String smsContent = "";//驗(yàn)證碼
  private EditText verifyText = null;//驗(yàn)證碼編輯框
  private String SMS_ADDRESS_PRNUMBER = "10690329013589";//短息發(fā)送提供商
  private String smsID = "";
  //短信觀察者 收到一條短信時(shí) onchange方法會(huì)執(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;// 光標(biāo)
    // 讀取收件箱中指定號(hào)碼的短信
    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"));
          //用正則表達(dá)式匹配驗(yàn)證碼
          Pattern pattern = Pattern.compile("[0-9]{6}");
          Matcher matcher = pattern.matcher(smsbody);
          if (matcher.find()) {//匹配到6位的驗(yàn)證碼
            smsContent = matcher.group();
            if (verifyText != null && null != smsContent && !"".equals(smsContent)) {
              verifyText.requestFocus();//獲取焦點(diǎn)
              verifyText.setText(smsContent);//設(shè)置文本
              verifyText.setSelection(smsContent.length());//設(shè)置光標(biāo)位置
            }
          }
          smsID = cursor.getString(cursor.getColumnIndex("_id"));
        }
      }
    }
  }
}

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

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

3.聲明讀取短信權(quán)限



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

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

小結(jié):

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

以上所述是小編給大家介紹的Android自動(dòng)獲取短信驗(yàn)證碼功能,希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!


新聞名稱:Android自動(dòng)獲取短信驗(yàn)證碼功能
鏈接分享:http://weahome.cn/article/pdeppd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部