Android实现自动填充验证码
16lz
2021-01-24
Android实现自动填充验证码
实现步骤:
- 创建Receiver
- 静态注册Receiver
- 监听Activity回调获取验证码
- 验证码的解析与填充
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) { ///短信内容的解析与填充 ... }
更多相关文章
- android/java中短信pdu编码
- 注意:Android中Handler引起的内存泄露
- Android(安卓)向系统发送一条短信
- Android快速入门 四大应用组件之一Activity(打电话和发短信)功能练
- 暂时遗忘OSGi,让我们去品味一杯android磨出的移动互联网咖啡吧
- Android接入微信支付完全解析,太全了~
- android安全问题(五) 抢先拦截短信 - 结果篇
- 处理Android应用在后台被杀死
- Android存在大Bug,导致误发短信