編輯:關於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
Android開發應用第一步 安裝及配置模擬器Genymotion
一、安裝及配置Genymotion(1)由於Eclipse中自帶的SDK模擬器,啟動之慢,不說了 現在給大家介紹一種比較快的模擬器Genymotion(2)首先去Geny
關於自定義View的基礎思路以及畫布的解析
1、前言UI作為用戶看得到的東西,已經成為吸引用戶的最重要因素了。在android中提供了大量的widget以及主題和屬性,加上各種動畫,已經可以實現非常多很絢麗的控件了
android 學習-Android Fragment 深度解析
有過一些面試經驗的人基本都深有體會,每次面試一般都會問到Fragment的知識,所以,今天我就單獨把Fragment拿出來與大家分享一下. 會涉及到Fragment如
詳解 Android 通信
什麼是通信?通信 ,顧名思義,指的就是信息的傳遞或者交換看完本文能收獲什麼?按目錄索引,你可以學習到1. 組件間的通信,Activity,fragment,Service