本篇文章為大家展示了怎么在Android中實(shí)現(xiàn)自動(dòng)填寫短信驗(yàn)證碼,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務(wù)至上”的服務(wù)理念,堅(jiān)持“二合一”的優(yōu)良服務(wù)模式,真誠服務(wù)每家企業(yè),認(rèn)真做好每個(gè)細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及成都效果圖設(shè)計(jì)等,在重慶網(wǎng)站建設(shè)、全網(wǎng)整合營銷推廣、WAP手機(jī)網(wǎng)站、VI設(shè)計(jì)、軟件開發(fā)等項(xiàng)目上具有豐富的設(shè)計(jì)經(jīng)驗(yàn)。
1.布局的xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/ed_smsVaild" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="輸入驗(yàn)證碼"/> </LinearLayout>
2.MainActivity中主要就是注冊(cè)和撤銷內(nèi)容觀察者
public class MainActivity extends Activity { public static final int SMSCODE = 1 ; SmsObserver smsObserver; private EditText editText; /** * 一個(gè)handle用于更新主ui中的Edittext */ private Handler mHandler = new Handler(){ public void handleMessage(android.os.Message msg) { if (msg.what == SMSCODE) { String codeString = (String)msg.obj; editText.setText(codeString); } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.ed_smsVaild); //創(chuàng)建內(nèi)容觀察者的對(duì)象 smsObserver = new SmsObserver(MainActivity.this, mHandler); //短信的uri為content://sms Uri uri = Uri.parse("content://sms"); //注冊(cè)內(nèi)容觀察者 this.getContentResolver().registerContentObserver(uri, true, smsObserver); } /** * 不用的時(shí)候?qū)?nèi)容觀察者手動(dòng)撤銷 */ @Override protected void onPause() { getContentResolver().unregisterContentObserver(smsObserver); } }
3.最關(guān)鍵的內(nèi)容觀察者
public class SmsObserver extends ContentObserver{ private Context mContext; private Handler mHandler; /** * 實(shí)現(xiàn)構(gòu)造方法,context用于獲得上下文,handle用于發(fā)送消息,便于更新ui * @param context * @param handler */ public SmsObserver(Context context,Handler handler){ super(handler); this.mContext = context; this.mHandler = handler; } /** * 重寫onchange()方法 */ @Override public void onChange(boolean selfChange, Uri uri) { String code = ""; Log.i("Info", "sms has changed"); Log.i("Info", uri.toString()); /** * 當(dāng)uri的內(nèi)容為content://sms/raw時(shí),這個(gè)短信是不存在數(shù)據(jù)庫中的, * 只有第二次的時(shí)候才寫入數(shù)據(jù)庫 */ if (uri.toString().equals("content://sms/raw")) { return; } //收件箱的uri Uri inboxUri = Uri.parse("content://sms/inbox"); //查詢短信,按時(shí)間降序進(jìn)行排序 Cursor cursor = mContext.getContentResolver().query(inboxUri, null, null, null, "date desc"); if (cursor != null) { if (cursor.moveToFirst()) { //讀出發(fā)件人和短信內(nèi)容 String address = cursor.getString(cursor.getColumnIndex("address")); String body = cursor.getString(cursor.getColumnIndex("body")); Log.i("info", "發(fā)件人為:"+address +""+"短信內(nèi)容為"+body); //正則表達(dá)式d{6}的意思是連續(xù)6位是數(shù)字的就提取出來 Pattern pattern = Pattern.compile("(\\d{6})"); //對(duì)短信的內(nèi)容進(jìn)行匹配 Matcher matcher = pattern.matcher(body); if (matcher.find()) { code = matcher.group(0); Log.i("Info", code); //將code發(fā)送到主線程 Message msMessage = new Message(); msMessage.what = MainActivity.SMSCODE; msMessage.obj = code; mHandler.sendMessage(msMessage); } } cursor.close(); } } }
可以在正則表達(dá)式之前加入一句判斷,這樣只有特定的號(hào)碼發(fā)送過來的短信才會(huì)進(jìn)行讀取。
if(!address.equals("XXXXXXXXXXXX")){ return; }
Android是一種基于Linux內(nèi)核的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由美國Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。
上述內(nèi)容就是怎么在Android中實(shí)現(xiàn)自動(dòng)填寫短信驗(yàn)證碼,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁標(biāo)題:怎么在Android中實(shí)現(xiàn)自動(dòng)填寫短信驗(yàn)證碼
分享鏈接:http://jinyejixie.com/article8/ghhcip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、虛擬主機(jī)、網(wǎng)站導(dǎo)航、微信小程序、服務(wù)器托管、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)