短信监听器的注册方法
InnerSmsReveiver receiver = new InnerSmsReveiver(); IntentFilter smsFilter = new IntentFilter();//new一个过滤器,设置过滤短信的方法 smsFilter.addAction("android.provider.Telephony.SMS_RECEIVED");//固定写法 设置短信的过滤方法 smsFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);//固定写法 设置获取短信 的级别 为最高 registerReceiver(receiver, smsFilter);//开启短信监听 receiver为短信 smsFilter为短信的过滤器
短信的内容提供者
private class InnerSmsReveiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { 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();//得到短信的地址(号码),可以用来作为标记,设置黑名单或白名单等等
这里可以设置短信内容的过滤方法,比如 包含一些敏感词或者 abortBroadcast();//对短信进行拦截,最好是设置一些条件,符合条件的进行拦截(拦截后,系统收不到短信) } } } }
如果不需要对短信监听,要记得关闭
unregisterReceiver(receiver); receiver = null;