android获取短信验证码自动填入的简单实现,可以直接用


权限

android:name="android.permission.RECEIVE_SMS"/>android:name="android.permission.READ_SMS" />


布局

activity_main.xml
xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity">            android:id="@+id/code"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:hint="自动读取短信验证码" />




MainActivity.class


package com.example.smsautoinput;import android.net.Uri;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.EditText;public class MainActivity extends AppCompatActivity {    public static final int MSG_RECEIVED_CODE = 1;    private EditText mCode = null;    private SmsObserver mObserver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mCode = (EditText) findViewById(R.id.code);        mObserver = new SmsObserver(MainActivity.this, mHandler);        Uri uri = Uri.parse("content://sms");        getContentResolver().registerContentObserver(uri, true, mObserver);    }    @Override    protected void onPause() {        super.onPause();        getContentResolver().unregisterContentObserver(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                mCode.setText(code);            }        }    };}

SmsObserver.class
package com.example.smsautoinput;import android.content.ClipboardManager;import android.content.Context;import android.database.ContentObserver;import android.database.Cursor;import android.net.Uri;import android.os.Handler;import android.util.Log;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Created by Administrator on 2017/8/200. */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"));                Log.e("DEBUG", "发件人为:" + address + " " + "短信内容为:" + body);                Pattern pattern = Pattern.compile("(\\d{4,6})");                Matcher matcher = pattern.matcher(body);                if (matcher.find()) {                    code = matcher.group(0);                    Log.e("DEBUG", "code is " + code);                    ClipboardManager cmb = (ClipboardManager)mContext.getSystemService(Context.CLIPBOARD_SERVICE);                    cmb.setText(code);                    mHandler.obtainMessage(MainActivity.MSG_RECEIVED_CODE, code).sendToTarget();                }            }            c.close();        }    }}





源码下载

http://download.csdn.net/download/qq_31939617/9941939


更多相关文章

  1. android监听短信
  2. Android短信的发送和广播接收者实现短信的监听
  3. android 读取串口数据的服务,android串口
  4. Android通过源码编译apk获得系统权限
  5. Android通过源码编译apk获得系统权限
  6. android基础知识点复习之短信发送
  7. Android(安卓)网络链接,不要忘记添加网络权限。
  8. android 写文件权限
  9. android 打电话 发送短信

随机推荐

  1. android listview item 被选中背景色设置
  2. 【Android】从无到有:手把手一步步教你自
  3. Android(安卓)蓝牙(九)A2DP基本功能
  4. Android(安卓)studio报错rg.gradle.api.t
  5. Android(安卓)字体自适应
  6. Android实现删除apk弹出网页
  7. Android(安卓)显示View在顶级窗口
  8. New Android(安卓)App Project: R cannot
  9. android 蓝牙低功耗(BLE)非常棒的工具类,获
  10. Android下的Wifi (上层流程)