欧美xxxxx在线观看,久久午夜无码鲁丝片秋霞,久久久亚洲欧洲日产国码αv ,女人被啪呻吟aaa级毛片,久久人人爽爽爽人久久久

您的當(dāng)前位置:主頁(yè) > 常見(jiàn)問(wèn)題

合作客戶

方太
金伯利

聯(lián)系我們

0371-86687083
地址:鄭州市管城區(qū)紫金山路興達(dá)國(guó)貿(mào)1802室
電話:0371-86687083

常見(jiàn)問(wèn)題

短信驗(yàn)證碼安卓手機(jī)自動(dòng)填寫(xiě)功能實(shí)現(xiàn)

2018-03-31 00:00:00    來(lái)源:    點(diǎn)擊:7609    喜歡:0

導(dǎo)讀
在進(jìn)行安卓應(yīng)用開(kāi)發(fā)的過(guò)程中都會(huì)涉及到注冊(cè)登錄功能模塊的實(shí)現(xiàn), 而許多的注冊(cè)或者登錄或者修改密碼功能常常是需要用戶手動(dòng)輸入短信驗(yàn)證碼,通常,用戶收到短信驗(yàn)證碼需要最小化應(yīng)用去查看短信然后回到應(yīng)用輸入相對(duì)于的驗(yàn)證碼,這個(gè)過(guò)程處理有點(diǎn)繁瑣,因此有必要應(yīng)用能夠自動(dòng)獲得下發(fā)成功的短信驗(yàn)證碼,方便用戶操作,提高用戶體驗(yàn)。


獲取短信原理


主要就是實(shí)時(shí)獲取短信信息,涉及到ContentObserver類(lèi)的使用,使用ContentProvider來(lái)監(jiān)聽(tīng)短信數(shù)據(jù)庫(kù)的變化,在自定義的ContentObserver當(dāng)中實(shí)現(xiàn)onChange 的方法進(jìn)行監(jiān)聽(tīng)特定手機(jī)號(hào)的短信, 然后進(jìn)行信息截取來(lái)填充到需要填充的位置。
ContentObserver即為內(nèi)容監(jiān)聽(tīng)者,當(dāng)我們發(fā)送一條短信到手機(jī)上時(shí),手機(jī)會(huì)自動(dòng)調(diào)用ContentObserver中的指定方法用來(lái)通知短信發(fā)生了變化,接著我們讀取短信中內(nèi)容,將驗(yàn)證碼提取出來(lái)自動(dòng)填寫(xiě)到輸入框中, 這樣就完成了自動(dòng)填寫(xiě)的功能。ContentObserver類(lèi)主要監(jiān)聽(tīng)短信內(nèi)容的變化, 這里涉及到Android常用的一種設(shè)計(jì)模式---【觀察者模式】。


ContentObserver 講解-觀察者模式


觀察者模式(有時(shí)又被成為發(fā)布(publish)-訂閱(Subscribe)模式,模型-視圖(View)模型,源-收聽(tīng)者(Listeber)模式或從屬者模式)是軟件設(shè)計(jì)模式中的一種,在此種模式中,一個(gè)目標(biāo)物件管理所有依賴(lài)于它的觀察者物件,并且在它本身的狀態(tài)改變時(shí)主動(dòng)發(fā)出通知,這通常透過(guò)呼叫各種觀察者所提供的方法來(lái)實(shí)現(xiàn), 此種模式通常被用來(lái)實(shí)現(xiàn)事件處理系統(tǒng)。
觀察者模式(Observer)完美的將觀察者和被觀察者的對(duì)象分離開(kāi)。觀察者模式在模塊之間劃定了清晰的界限,提高了應(yīng)用程序的可維護(hù)性和重用性。
觀察者設(shè)計(jì)模式定義了對(duì)象間的一種一對(duì)多的依賴(lài)關(guān)系,以便一個(gè)對(duì)象的狀態(tài)發(fā)生變化時(shí),所有依賴(lài)于它的對(duì)象都得到通知并自動(dòng)刷新。
ContentObserver——內(nèi)容觀察者,目的是觀察(捕捉)特定Uri引起的數(shù)據(jù)庫(kù)的變化,繼而做一些相應(yīng)的處理,它類(lèi)似于數(shù)據(jù)庫(kù)技術(shù)中的觸發(fā)器(Trigger),當(dāng)ContentObserver所觀察的Uri發(fā)生變化時(shí),便會(huì)觸發(fā)它。
觀察者(即我們的應(yīng)用):Observer將自己注冊(cè)到被觀察對(duì)象(Subject)中,被觀察對(duì)象將觀察者存放在一個(gè)容器(Container)里。
被觀察(即系統(tǒng)的短信應(yīng)用):被觀察對(duì)象發(fā)生了某種變化,從容器中得到所有注冊(cè)過(guò)的觀察者,將變化通知觀察者。
撤銷(xiāo)觀察:觀察者告訴被觀察者要撤銷(xiāo)觀察,被觀察者從容器中將觀察者去除。
具體到我們的項(xiàng)目中,也就是說(shuō),當(dāng)應(yīng)用剛開(kāi)始運(yùn)行的時(shí)候,會(huì)向我們手機(jī)系統(tǒng)的短信應(yīng)用注冊(cè)一個(gè)觀察者,當(dāng)短信發(fā)生變化的時(shí)候,短信應(yīng)用會(huì)通知所注冊(cè)的觀察者發(fā)生了變化,我們的觀察者收到這樣的通知時(shí),就會(huì)根據(jù)代碼執(zhí)行相應(yīng)的操作,從而實(shí)現(xiàn)相關(guān)自動(dòng)填寫(xiě)驗(yàn)證碼的功能。當(dāng)我們完成所需要的功能時(shí),我們要撤銷(xiāo)觀察,解除注冊(cè),被觀察者從容器中將觀察者去除。觀察者被撤銷(xiāo)后不再收到短信的內(nèi)容變化通知。


觀察特定Uri的步驟如下:


創(chuàng)建我們特定的 ContentObserver 派生類(lèi),必須重載父類(lèi)構(gòu)造方法,必須重載 onChange() 方法去處理回調(diào)后的功能實(shí)現(xiàn)。
利用 context.getContentResolover() 獲得 ContentResolove 對(duì)象,接著調(diào)用 registerContentObserver() 方法去注冊(cè)內(nèi)容觀察者。
由于 ContentObserver 的生命周期不同步于 Activity 和 Service 等,因此,在不需要時(shí),需要手動(dòng)的調(diào)用 unregisterContentObserver() 去取消注冊(cè)。

短信的Uri共有一下幾種:
content://sms/inbox    收件箱content://sms/sent      已發(fā)送content://sms/draft    草稿content://sms/outbox    發(fā)件箱  (正在發(fā)送的信息)content://sms/failed    發(fā)送失敗content://sms/queued    待發(fā)送列表  (比如開(kāi)啟飛行模式后,該短信就在待發(fā)送列表里)
具體實(shí)現(xiàn)代碼:
public class SmsObserver extends ContentObserver {      public static final String SMS_URI_INBOX = "content://sms/inbox";      private Activity activity = null;      private String smsContent = "";      private SmsListener listener;      public SmsObserver(Activity activity, Handler handler, SmsListener listener) {          super(handler);          this.activity = activity;          this.listener = listener;  }      @Override      public void onChange(boolean selfChange) {          super.onChange(selfChange);          Cursor cursor = null;          // 讀取收件箱中含有某關(guān)鍵詞的短信          ContentResolver contentResolver = activity.getContentResolver();          cursor = contentResolver.query(Uri.parse(SMS_URI_INBOX), new String[] {                  "_id", "address", "body", "read" }, "body like ? and read=?",                  new String[] { "%快遞%", "0" }, "date desc");          if (cursor != null) {              cursor.moveToFirst();              if (cursor.moveToFirst()) {                  String smsbody = cursor                          .getString(cursor.getColumnIndex("body"));                  String regEx = "[^0-9]";                  Pattern p = Pattern.compile(regEx);                  Matcher m = p.matcher(smsbody.toString());                  smsContent = m.replaceAll("").trim().toString();                  if (!TextUtils.isEmpty(smsContent)) {                      listener.onResult(smsContent);                  }              }          }      }      /*      * 短信回調(diào)接口      */      public interface SmsListener {          /**          * 接受sms狀態(tài)          *           * @Title: onResult          */          void onResult(String smsContent);      }  }
使用如下:
SmsObserver smsObserver = new SmsObserver(this, new Handler(),              new SmsListener() {                  @Override                  public void onResult(String smsContent) {                      //todo                  }              });      this.getContentResolver().registerContentObserver(              Uri.parse("content://sms/"), true, smsObserver);
添加讀取短信的權(quán)限:

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

嘉之元云通信致力于為客戶提供優(yōu)質(zhì)驗(yàn)證碼短信,營(yíng)銷(xiāo)短信、國(guó)際短信;國(guó)際直連通道可群發(fā)短信至任何國(guó)家和地區(qū),其短信驗(yàn)證碼、短信營(yíng)銷(xiāo)等106短信接口已服務(wù)了近兩萬(wàn)家企業(yè),提供短信接口API,幫助客戶快速接入!推薦閱讀:如何使用短信營(yíng)銷(xiāo)增加銷(xiāo)售額


上一篇:中國(guó)移動(dòng)ID類(lèi)短信網(wǎng)關(guān)錯(cuò)誤代碼匯總
下一篇:短信驗(yàn)證碼短信平臺(tái)常見(jiàn)的幾個(gè)問(wèn)題及解決辦法

?
  • 服務(wù)咨詢(xún) 0371-86687083
  • 一對(duì)一貴賓級(jí)服務(wù)
  • 7X24小時(shí)技術(shù)保障
Copyright ? 2013-2017. All Rights Reserved. 鄭州嘉之元計(jì)算機(jī)科技有限公司 www.yzdtdq.net.cn 版權(quán)所有 | 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:B2-20194910| 備案號(hào): 豫ICP備15030919-2號(hào)
營(yíng)業(yè)執(zhí)照
圖片
[網(wǎng)站地圖] [聯(lián)系我們]
本公司主要從事:短信驗(yàn)證碼,短信接口,短信平臺(tái),群發(fā)短信,短信群發(fā) sitemap:sitemap.txt|

豫公網(wǎng)安備41010402002418號(hào)

點(diǎn)擊這里給我發(fā)消息