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 APK权限大全
  2. android监听短信
  3. Android短信的发送和广播接收者实现短信的监听
  4. Android通过源码编译apk获得系统权限
  5. Android 网络链接,不要忘记添加网络权限。
  6. android基础知识点复习之短信发送
  7. android 写文件权限
  8. android 打电话 发送短信
  9. Android 常用权限

随机推荐

  1. Android:从程序员到架构师之路
  2. 引路蜂Android技术网站开通了
  3. 把这份关于Android(安卓)Binder原理一系
  4. Android(安卓)Studio使用第三方框架的方
  5. Android获取经纬度,计算距离,方位角
  6. Android之实例界面设计
  7. Android架构模式一:MVC
  8. Scala:未受重视却潜力巨大的Android编程语
  9. android 启动过程 [ZZ]
  10. Android(安卓)4.1正式发布 十大新特性