短信验证码自动填写
来源:互联网 发布:apache下载64位 编辑:程序博客网 时间:2024/06/05 07:47
在项目开发中,经常涉及到手机发送验证码登录,例如百度外卖手机号验证码登录,再次为了提高用户体验度,再次分享了短信验证码自动填写,提高用户体验度,下面是我的代码:
//继承ContentObserver 观察者观察数据的变化
public class SmsObserver extends ContentObserver {
private Context mContext;
private Handler mHandler;
public SmsObserver(Context context, Handler handler) {
super(handler);
mContext = context;
mHandler = handler;
}
@Override
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange, uri);
Log.e("DEBUG", "SMS has changed!");
Log.e("DEBUG", uri.toString());
String code = "";
if (uri.toString().equals("content://sms/raw")) {
return;
}
Uri inboxUri = Uri.parse("content://sms/inbox");
Cursor c = mContext.getContentResolver().query(inboxUri, null, null, null, "date desc");
if (c != null) {
if (c.moveToFirst()) {
String address = c.getString(c.getColumnIndex("address"));
String body = c.getString(c.getColumnIndex("body"));
if (!address.equals("18443333333")) {
return;
}
//添加验证码正则表达式
Pattern pattern = Pattern.compile("(\\d{6})");
Matcher matcher = pattern.matcher(body);
//正则表达是匹配
if (matcher.find()) {
code = matcher.group(0);
Log.e("DEBUG", "code is " + code);
mHandler.obtainMessage(MainActivity.MSG_RECEIVED_CODE, code).sendToTarget();
}
}
c.close();
}
}
}
MainActivity使用
public static final int MSG_RECEIVED_CODE = 1;
private EditText et_ValidateCode = null;
private SmsObserver mObserver;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == MSG_RECEIVED_CODE) {
String code = (String)msg.obj;
//update the UI
et_ValidateCode.setText(code);
}
}
};
@Override
protected void onPause() {
super.onPause();
getContentResolver().unregisterContentObserver(mObserver);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_ValidateCode = (EditText)findViewById(R.id.et_validateCode);
mObserver = new SmsObserver(MainActivity.this, mHandler);
Uri uri = Uri.parse("content://sms");
getContentResolver().registerContentObserver(uri, true, mObserver);
}
- 短信验证码自动填写
- 短信验证码自动填写
- 短信验证码自动填写
- 短信验证码自动填写
- 读取短信自动填写验证码功能
- Android 之短信验证码自动填写
- android 短信验证码自动填写
- android短信验证码自动填写
- Android 短信验证码自动填写
- Android 短信验证码自动填写
- Android短信验证码的自动填写
- android 短信验证码自动填写
- Android :短信验证码自动填写-v2
- Android 短信验证码自动填写
- 短信验证码自动填写小DOME
- Android 短信验证码自动填写
- android app 自动填写短信验证码
- 自动填写获取的短信验证码
- linq 扩展方法
- 反编译之apktool
- test3.13
- go语言 nsq源码解读三 nsqlookupd源码nsqlookupd.go
- python中str函数isdigit、isdecimal、isnumeric的区别
- 短信验证码自动填写
- Popmetal ubuntu系统实现jpeg硬解例子
- Java编程中为了性能优化应做到的26件事
- poj 2155 Matrix(树状数组)
- 经纬度多边形点判断
- Git使用 - 安装配置获取帮助
- Android ExpandableListView展开时Switch控件错位显示问题
- iOS程序员必须知道的Android要点
- ZOJ 1003 Crashing Balloon