关闭

Android 自动填写短信验证码 两种实现(二)

标签: android验证码短信自动填写ContentObs
145人阅读 评论(0) 收藏 举报
分类:

使用内容观察者

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
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

安卓ContentObserver模式获取短信用正则自动填充验证码

安卓开发采用观察者模式ContentObserver监听短信用正则获取短信验证码
  • yung7086
  • yung7086
  • 2014-05-17 21:26
  • 13576

Android短信验证码自动填写功能的实现

android应用经常会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,通常,用户收到短信需要最小化应用去查看短信再填入验证码,必然比较麻烦,因此有必要能够自动获得下发的短信验证码,方便了用户的操作,用户体验更好。
  • u014343528
  • u014343528
  • 2016-03-15 20:08
  • 2778

Android获取短信验证码并自动填充的两种方式

有些项目为了方便客户操作,减去客户输入短信验证码的时间,会要求安卓app能够获取收到的短信验证码并自动填充到输入框。所以,我整理了安卓获取短信验证码并自动填充输入框的两种方法,而且正式在项目中使用并无bug。        一:监听短信库...
  • dwj611
  • dwj611
  • 2017-04-13 13:42
  • 1533

android--监听短信实现短信验证码自动填充

android中短信验证码的自动填充
  • biaobiao1217
  • biaobiao1217
  • 2016-07-08 14:51
  • 1070

Android 自动填写短信验证码 两种实现(一)

使用广播接收者 创建短信广播接收者 注册非常驻广播接收者使用广播接收者1. 创建短信广播接收者 /** * 项目名称:SSZPbaoliu * 类描述: 短信广播接受者 (实现自动填写验证码功能) * 创建人:my * 创建时间:2016/6/16 12:50 * 修改人:my...
  • mixi9760
  • mixi9760
  • 2016-06-16 13:30
  • 190

android获取短信验证码并自动填写的实现一

android获取短信验证码并自动填写的实现一,有需要的朋友可以参考下。 现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限: 实现一个广...
  • lyglostangel
  • lyglostangel
  • 2015-09-30 09:49
  • 1288

短信验证码自动填写

在应用的开发过程中 我们需要向用户发送验证码以验证用户的身份,但是用户收到短信验证码后,需要离开当前的应用去查看验证码,然后再返回我们的应用来填写验证码,这样会给用户带来诸多的不便。android系统上的应用可以读取到手机上的短信,我们可以通过这个特性去获取我们想要的内容,显示到我们的输入框中。 ...
  • leiliang568
  • leiliang568
  • 2016-01-12 17:25
  • 789

android 短信验证码自动填写的两种方式

实际应用开发中,会经常用到短信验证的功能,这个时候如果再让用户就查看短信.然后再回到界面进行短信的填写,难免有多少有些不方便,作为开发者.本着用户至上的原则我们也应该来实现验证码的自动填写功能,实现短信验证码自动填写有两种方式: 第一种,实现ContentObserver,把我们自己的Observ...
  • u010399316
  • u010399316
  • 2015-09-28 10:23
  • 2240

Android 自动填写验证码

获取验证码几乎是每个应用所必备的,很多应用在用户注册的时候设置一个验证码的功能,根据手机号获取验证码的作用就是防止恶意注册。先来看一下效果图 上面的效果就是读取短信的信息,然后根据信息内容将验证码截取出来,赋值到输入框。具体的实现过程如下: 首先就是要读取短信,获取短信的内容,如何获取短信的...
  • u014452224
  • u014452224
  • 2016-12-28 17:00
  • 1278

Android 之短信验证码自动填写

最近做项目。老板提到自动填写后台发送的短信验证码狠人性化,老板的话。就是我们的目标,那就开始做咯。 其实也很简单。不多说直接上代码 public class SmsContent extends ContentObserver{/** * Creates a content observer...
  • qq1221jyj
  • qq1221jyj
  • 2015-07-22 11:35
  • 220
    个人资料
    • 访问:42442次
    • 积分:1151
    • 等级:
    • 排名:千里之外
    • 原创:70篇
    • 转载:21篇
    • 译文:0篇
    • 评论:7条
    Github
    最新评论