Android 自动填写短信验证码 两种实现(二)
来源:互联网 发布:淘宝退货挣钱 编辑:程序博客网 时间:2024/06/07 03:27
- 使用内容观察者
- 创建一个内容观察者
- 在MainActivity 中注册内容观察者
- 权限
- Demo
使用内容观察者
1. 创建一个内容观察者
public class MyContentObserver extends ContentObserver { private Handler mHandler;//更新ui线程 private Activity mActivity;//上下文 /** * Creates a content observer. * * @param handler The handler to run {@link #onChange} on, or null if none. */ public MyContentObserver(Handler handler,Activity activity) { super(handler); this.mHandler=handler; this.mActivity=activity; } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); //数据库发生改变时调用 Uri uri= Uri.parse("content://sms/"); //获取ContentResolver对象 ContentResolver contentResolver=mActivity.getContentResolver(); Cursor cursor = contentResolver.query(uri, new String[]{"address","body"}, null, null, null); if(cursor!=null) { cursor.moveToFirst(); ContentValues values = new ContentValues(); values.put("read", "1"); //修改短信为已读模式 String address=cursor.getString(0); String body=cursor.getString(1); Pattern pattern=Pattern.compile("(\\d{6})"); Matcher matcher=pattern.matcher(body); if(matcher.find()){ String code=matcher.group(0); Toast.makeText(mActivity, "验证码:"+code, Toast.LENGTH_SHORT).show(); mHandler.obtainMessage(1,code).sendToTarget(); } cursor.close();//关闭游标 mActivity.getContentResolver().unregisterContentObserver(this);//注销内容观察者 } }}
2. 在MainActivity 中注册内容观察者
public class MainActivity extends AppCompatActivity { private TextView mTvContent; private ContentResolver mContentResolver; private Handler mHandler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what==1){ String string= (String) msg.obj; mTvContent.setText(string); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTvContent= (TextView) findViewById(R.id.content); mContentResolver=getContentResolver(); Uri uri= Uri.parse("content://sms/"); //注册内容观察者 mContentResolver.registerContentObserver(uri,true,new MyContentObserver(mHandler,this) ); }}
3 权限
<uses-permission android:name="android.permission.READ_SMS"/>
4 Demo
链接:http://pan.baidu.com/s/1o7JrM8i 密码:apa2
0 0
- Android 自动填写短信验证码 两种实现(二)
- Android 自动填写短信验证码 两种实现(一)
- android 短信验证码自动填写的两种方式
- android 短信验证码自动填写的二种方法
- android获取短信验证码并自动填写的实现二
- android获取短信验证码并自动填写的实现
- Android短信验证码自动填写的实现
- Android短信验证码自动填写功能的实现
- Android短信验证码自动填写功能的实现
- Android 之短信验证码自动填写
- android 短信验证码自动填写
- android短信验证码自动填写
- Android 短信验证码自动填写
- Android 短信验证码自动填写
- Android短信验证码的自动填写
- android 短信验证码自动填写
- Android :短信验证码自动填写-v2
- Android 短信验证码自动填写
- here文档
- Linux TCP 粘/拆包 与 Netty TCP粘/拆包的 区别
- Java 8:不动点
- C#中的代理委托和event关键字
- CF_604A(水)
- Android 自动填写短信验证码 两种实现(二)
- RS-485半双工延时问题
- Android布局优化——merge与ViewStub
- 学习Android,做报告的感想
- CSS块级元素和内联元素
- ajax-struts2-json
- 用哈希表判断两个单链表是否相交的问题
- 冒泡排序实例
- hdu 1251 统计难题