Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 安卓觀察者ContentObserver模式用正則獲取短信驗證碼

安卓觀察者ContentObserver模式用正則獲取短信驗證碼

編輯:關於Android編程

最近做注冊的時候看到很多app在手機接受到短信的時候直接填寫驗證碼到界面省略用戶自動輸入,感覺這樣確實蠻人性化的呵呵,於是自己也做了一個

步驟:

首先我使用了ContentObserver監聽短信,(最好知道您的驗證碼從那個號碼發過來)

然後從短信中用正則的分組去拿到驗證碼(當然驗證碼必須是什麼格式)

貼出關鍵代碼:

注冊監聽短信數據庫的

	
ContentObserver c=new ContentObserver(han) {
				@Override
				public void onChange(boolean selfChange) {
					// TODO Auto-generated method stub
					super.onChange(selfChange);
					han.sendEmptyMessage(0);
				}
			};
getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, c);


Handler han = new Handler() {
		@SuppressWarnings("deprecation")
		public void handleMessage(android.os.Message msg) {
			String codestr = null;
			try {
				codestr = Cus_UnitTools.getsmsyzm(Reg_ForgetPassword.this);
				code.setText(codestr);
				requestcode();
			} catch (Exception e) {
				Log.e("yung", "驗證碼提取失敗:" + codestr);
			}
		};
	};	

	public static String getsmsyzm(Activity c) {
		Uri uri = Uri.parse("content://sms/inbox");
		String[] projection = new String[] { "address", "person", "body" };
		String selection = " address='" + JTPHONE + "' ";
		String[] selectionArgs = new String[] {};
		String sortOrder = "date desc";
		@SuppressWarnings("deprecation")
		Cursor cur = c.managedQuery(uri, projection, selection, selectionArgs,
				sortOrder);
		if(cur!=null&&cur.getCount()>0){
			cur.moveToFirst();
			String body = cur.getString(cur.getColumnIndex("body")).replaceAll(
					"\n", " ");
			cur.close();
			return getyzm(body, YZMLENGTH);
	}
		cur.close();
		return null;
	}


        /**
	 * 從短信字符竄提取驗證碼
	 * @param body 短信內容 
         * @param YZMLENGTH  驗證碼的長度 一般6位或者4位
	 * @return 接取出來的驗證碼
	 */
	public static String getyzm(String body, int YZMLENGTH) {
		// 首先([a-zA-Z0-9]{YZMLENGTH})是得到一個連續的六位數字
		// (?


//有些驗證碼是純數字的那麼直接用這個就可以了
//Pattern p = Pattern.compile("(? 監聽完成後記得getContentResolver().unregisterContentObserver(c);注銷監聽

這樣子就可以監聽到短信數據庫的變化了記住還需要加入權限順便列出短信權限







demo就不寫了呵呵這裡很清楚也很簡單..不喜勿噴,有錯回帖,轉載必備 尊重作者-yung7086

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved