Android实现自动填充验证码

实现步骤:

  1. 创建Receiver
  2. 静态注册Receiver
  3. 监听Activity回调获取验证码
  4. 验证码的解析与填充

1.Receiver的创建与回调的创建

public class MyReceiver extends BroadcastReceiver {    private static final String TAG = "MainActivityInfo";    public CallBack callBack ;    public interface CallBack{        void setMsg(String s);    }    @Override    public void onReceive(Context context, Intent intent) {        if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {            Log.i(TAG, "onReceive: ");            StringBuilder builder = new StringBuilder();            //接收由SMS传过来的数据            Bundle bundle = intent.getExtras();            //判断是否由数据            if (bundle != null) {                //通过pdus可以接收到的所有短信消息                Object[] pdus = (Object[]) bundle.get("pdus");                //构建短信对象array,并依据收到短信长度来构建array的大小                SmsMessage[] smsMessages = new SmsMessage[pdus.length];                for (int i = 0; i < smsMessages.length; i++) {                    smsMessages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);                }                //将收来的短信合并自定义短信于StringBuild当中                for (SmsMessage message : smsMessages) {                    builder.append("短信来源");                    //获取短信的号码                    builder.append(message.getDisplayOriginatingAddress());                    //获取短信的内容                    builder.append("\n短信内容\n");                    builder.append(message.getDisplayMessageBody());                }                System.out.println(builder.toString());                callBack = MainActivity.callBack;                callBack.setMsg(builder.toString());            }        }    }}

2.静态注册Receiver(注册之后才可以接收到收到的短信)

<receiver android:name=".MyReceiver"><intent-filter android:priority="800"> //优先级    <action android:name="android.provider.Telephony.SMS_RECEIVED" /></intent-filter></receiver>

3.Activity通过回调获取到短信

public class MainActivity extends AppCompatActivity implements MyReceiver.CallBack{    private TextView tv_content ;    public static MyReceiver.CallBack callBack ;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        callBack = this;        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);        setSupportActionBar(toolbar);        SharedPreferences preferences = getSharedPreferences("Brioal", MODE_WORLD_READABLE);        SharedPreferences.Editor editor = preferences.edit();        editor.putString("Desc", "监听收到的短信,可用于自动填写验证码");        editor.apply();        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);        fab.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                startActivity(new Intent(MainActivity.this, SummaryActivity.class));            }        });        tv_content = (TextView) findViewById(R.id.main_tv_content);    }    @Override    public void setMsg(String s) {       ///短信内容的解析与填充       ...    }

更多相关文章

  1. android/java中短信pdu编码
  2. 注意:Android中Handler引起的内存泄露
  3. Android(安卓)向系统发送一条短信
  4. Android快速入门 四大应用组件之一Activity(打电话和发短信)功能练
  5. 暂时遗忘OSGi,让我们去品味一杯android磨出的移动互联网咖啡吧
  6. Android接入微信支付完全解析,太全了~
  7. android安全问题(五) 抢先拦截短信 - 结果篇
  8. 处理Android应用在后台被杀死
  9. Android存在大Bug,导致误发短信

随机推荐

  1. Android(安卓)视频缩略图之MediaMetadata
  2. Android实现CoverFlow效果二
  3. Android实现乘法小例子(两个Activity)
  4. Android(安卓)接收短信并屏蔽notificatio
  5. Android(安卓)文件的选择
  6. Android(安卓)使用内容解析者往短信数据
  7. android中shape的使用(android:angle小解)
  8. Android(安卓)OpenGL之生成FloatBuffer
  9. 【Android】 dialog 设置maxHeight 最大
  10. android获取versionName和versionCode