android获取短信验证码自动填入
来源:互联网 发布:股票数据挖掘 编辑:程序博客网 时间:2024/06/05 04:34
android获取短信验证码自动填入的简单实现,可以直接用
权限
<!--读取短信权限--><uses-permission android:name="android.permission.RECEIVE_SMS"/><uses-permission android:name="android.permission.READ_SMS" />
布局
activity_main.xml<RelativeLayout 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"> <EditText android:id="@+id/code" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:hint="自动读取短信验证码" /></RelativeLayout>
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.classpackage 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
阅读全文
0 0
- android获取短信验证码自动填入
- Android中实现短信验证码自动填入
- Android短信验证码自动填入解决方案之一:BroadcastReceiver
- Android实战简易教程-第三十六枪(监听短信-实现短信验证码自动填入)
- Android实战简易教程<三十六>(监听短信-实现短信验证码自动填入)
- 【Android-实践】检测验证码短信,将验证码自动填入
- android 短信验证自动获取验证码
- Android ContentObserver实现验证码自动填入
- Android实战简易教程<三十九>(第三方短信验证平台Mob和验证码自动填入功能结合实例)
- android自动获取短信验证码
- android自动获取短信验证码
- android自动获取短信验证码
- android自动获取短信验证码
- android自动获取短信验证码
- Android自动获取短信验证码
- android 自动获取短信验证码
- Android自动获取短信验证码
- Android自动获取短信验证码
- [HDU 6142] Jedi Council
- 简易的省市二级联动
- Spring4自定义@Value功能
- 演绎推理的几种形式
- HDU 2609 How Many最大最小表示法的模板
- android获取短信验证码自动填入
- layer弹出层详解
- css3过渡元素
- 例题22
- 生信脚本练习(13)文件合并(初识numpy)
- javaScript权威指南学习笔记
- 。
- windows下maven基本设置
- JavaScript的数据类型