AndroidAndroid 专题程序员

自动提取短信验证码解决方案

2016-01-28  本文已影响840人  极分享

♥♥♥  原文转自极分享     更多详情及更新查看原文 ♥♥♥


主要功能及优点

1.收到验证码短信后,自动提取短信中的验证码填写到相应输入框

2.可指定一个号码,只读取与他有关短信,避免提取来源错误

3.利用正则表达式,可匹配各种类型验证码

模块集成关键步骤


     源码下载


将auto_getcode_demo中src包里的SMSContentObserver类复制到你的项目src包中

在SMSContentObserver中:

修改正则表达式内容来匹配自己想要获取的字符串

private String patternCoder = "\\d{4}";    //正则表达式

指定一个号码,只读取与他有关的新消息。

private boolean checkPhone(String phone) {

// TODO Auto-generated method stub

String c_phone = "10690032980066";

if(c_phone.equals(phone) )

return true;

return false;

}

指定一关键字符串,用来确认短信内容是我们想要去提取的

private boolean checkString(String message){

if(TextUtils.isEmpty(message))

return false;

Pattern p = Pattern.compile("FinalShares");  //这个关键字符串可以自定义

Matcher matcher = p.matcher(message);

if(matcher.find())

return true;

return false;

}

在MainActivity中:

注册内容观察者,用来监听手机短信的变动

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

smsContentObserver = new SMSContentObserver(this, mHandler);  // 创建1个对象

registerContentObservers() ;                                  //注册内容观察者

}

private void registerContentObservers() {

// ”表“内容观察者 ,通过测试我发现只能监听此Uri -----> content://sms

// 监听不到其他的Uri 比如说 content://sms/outbox

Uri smsUri = Uri.parse("content://sms");

getContentResolver().registerContentObserver(smsUri, true,smsContentObserver);

}

创建一个handler来接收观察者监听传来的信息,当接收到指定号码短信时,自动获得相应验证码并填写到对应控件

private Handler mHandler = new Handler() {

public void handleMessage(Message msg) {

switch (msg.what) {

case MSG_OUTBOXCONTENT:

String outbox = smsContentObserver.getstrContent();

etSmsoutbox.setText(outbox);

break;

default:

break;

}

}

};

在AndroidManifest中添加相应权限

环境相关

开发平台:android

语言:    java

开发工具: eclipse

效果展示:

auto_getcode_demo.rar    源码下载


 原文转自极分享      更多详情及更新查看原文

在此聆谢极分享的    水很活泼



上一篇下一篇

猜你喜欢

热点阅读