Android自动获得短信验证码
来源:互联网 发布:爱因斯坦人工智能名言 编辑:程序博客网 时间:2024/04/28 20:00
Android自动获得短信验证码
1:<!--动态读取手机短信权限--><uses-permission android:name="android.permission.READ_SMS" />2:编写内容观察者类,监听短信触发: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("10690067200453")) { return; } Log.e("DEBUG", "发件人为:" + address + " " + "短信内容为:" + body); Pattern pattern = Pattern.compile("(\\d{6})");//通过正则表达式获得六位数验证码 Matcher matcher = pattern.matcher(body); if (matcher.find()) { code = matcher.group(0); Log.e("DEBUG", "code is " + code); //发送通过Register.MSG_RECEIVED_CODE发送code到实现类 mHandler.obtainMessage(Register.MSG_RECEIVED_CODE, code).sendToTarget(); } } c.close(); } }}3:实现类:public class Register extends Activity { private EditText codeText;//验证码框 public static final int MSG_RECEIVED_CODE = 1; 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; codeText.setText(code); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); //动态获取短信验证码 mObserver = new SmsObserver(Register.this, mHandler); Uri uri = Uri.parse("content://sms"); getContentResolver().registerContentObserver(uri, true, mObserver);//注册短信内容观察者}@Overrideprotected void onPause() { super.onPause(); getContentResolver().unregisterContentObserver(mObserver);//取消内容观察者注册}4:图片:![短信验证码](http://img.blog.csdn.net/20151120222027525)
0 0
- Android自动获得短信验证码
- Android获得短信中的验证码并自动填充
- android 短信验证自动获取验证码
- android自动获取短信验证码
- android自动获取短信验证码
- android自动获取短信验证码
- android自动获取短信验证码
- android自动获取短信验证码
- Android自动读取短信验证码
- Android自动获取短信验证码
- android自动读取短信验证码
- Android自动填充短信验证码
- android 自动获取短信验证码
- Android 之短信验证码自动填写
- android 短信验证码自动填写
- Android自动获取短信验证码
- android短信验证码自动填写
- Android自动填充短信验证码
- HDU4324-Triangle LOVE-判断是否存在环(拓扑)
- 多线程——原子、非原子,自旋锁和互斥锁
- Web Service基础篇(一)之AXIS2
- Java学习笔记--组合数学
- 使用TCP协议的NAT穿透技术 (转)
- Android自动获得短信验证码
- 斗地主检测牌型(玩家)
- HDOJ 2016 数据的交换输出
- 5.1.3 date对象
- ubuntu java 环境变量设置
- triangle
- [笔记-架构探险]框架优化与功能扩展3.2.安全框架shiro、提供安全控制特性
- No match found for 'my_favorites' in the search path
- 在C++中实现foreach循环,比for_each更简洁!