一、准备工作
导入它所需要的包
implementation 'com.yanzhenjie:permission:2.0.3'
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
1、在MainActivity里的代码
1)、申请动态权限
AndPermission.with(this)
.runtime()
.permission(Permission.RECEIVE_SMS)
.onGranted(permissions -> {
Toast.makeText(MainActivity.this, "授权成功!", Toast.LENGTH_SHORT).show();
})
.onDenied(permissions -> {
Toast.makeText(MainActivity.this, "授权失败!", Toast.LENGTH_SHORT).show();
})
2)、注册广播
// 注册广播
MyRecevier myRecevier = new MyRecevier();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(myRecevier,intentFilter)
这个会在控制台打印出。
2、再创建一个新的MyRecevier.java
1.短信广播
在MainActivity里改为这个
intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
2.解析短信广播内容
//收到广播 该方法就会回掉
Object[] objs = (Object[]) intent.getExtras().get("pdus");
for(Object obj:objs) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) obj);
String body = smsMessage.getMessageBody();
String sender = smsMessage.getOriginatingAddress();
Log.i("MyRecevier","body :" + body);
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210607114014944.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1OTU3MDI0,size_16,color_FFFFFF,t_70#pic_center)
Log.i("MyRecevier","sender :" + sender);
}
3、会在打印台打印