去安全中心的權限管理,把所有軟件的允許訪問短信內容的權限打開
自動填寫是某些軟件自己的功能,並不是手機的功能,比如說支付寶在有些輸入驗證碼的地方可以自動填寫短信裏的驗證碼,前提是妳手機要把短信讀取的權限開放給支付寶,不然支付寶也沒法獲取妳的短信內容的。
在應用的開發過程中 我們需要向用戶發送驗證碼以驗證用戶的身份,但是用戶收到短信驗證碼後,需要離開當前的應用去查看驗證碼,然後再返回我們的應用來填寫驗證碼,這樣會給用戶帶來諸多的不便。android系統上的應用可以讀取到手機上的短信,我們可以通過這個特性去獲取我們想要的內容,顯示到我們的輸入框中。
本次我們實現的功能要用到ContentObserver,當我們發送壹條短信到我們的手機上時,手機會自動調用ContentObserver類中的指定方法,來通知我們的應用短信內容的改變,我們提取內容中的信息 填寫到我們的輸入框中?
在這裏我和大家說壹個與之相關的設計模式:觀察者模式:
觀察者模式是軟件設計模式中的壹種,在此模式中,壹個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知。這通常是透過呼叫各觀察者所提供的方法來實現。此模式通常被用來實現時間處理系統。
觀察者模式(Observer)完美的將觀察者和被觀察者的對象分離開,在模塊之間劃定了清晰的界限,提高了應用程序的可維護性和重用性。
觀察者設計模式定義了對象間的壹種壹對多的依賴關系,以便壹個對象的狀態發生改變時,所有依賴於它的對象都得到通知並自動刷新。
應用到我們的這個例子上來說,就是首先我們在我們的應用剛開始運行的過程中,向我們的系統短信應用註冊壹個觀察者,就告訴我們的短信應用說,我是妳的觀察者,當妳自己的狀態發生了變化後,妳就通知我。
我們來看壹下觀察者的基本流程:
觀察者將自己註冊到被觀察對象(subject)中,被觀察者對象將觀察者存放在壹個容器(Container)裏。
被觀察者對象發生變化,從容器中得到所有註冊過的觀察者,將變化通知觀察者。
觀察者告訴觀察者要撤銷觀察,被觀察者從容器中將觀察者去除。
內容觀察者,目的是觀察(捕捉)特定Uri引起的數據庫的變化,繼而做壹些相應的處理,它類似於數據庫技術中的觸發器(Trigger),當ContentOberver所觀察的Uri發生變化時,便會觸發它。
觀察特定Uri的步驟如下:
1.創建我們特定的ContentOberver派生類,必須重載父類構造方法,必須重載onChange()方法去處理回調後的功能實現。
2.利用context.getContetResolover()獲得ContentResolover對象,接著調用registerContentObeserver()方法去註冊內容觀察者。
3.由於ContentObsever的生命周期不同步於Activity和Service等,因此,在不需要時,需要手動的調用unregisterContentObserver()去取消註冊。