BroadcoastReceiver之短信到来监听和获取内容

时间:2022-12-14 05:05:49

废话就不说了,新建类继承,然后配置Manifest.xml:如下

<!--需要给一个接收短信的权限 -->
<uses-permission android:name="android.permission.RECEIVE_SMS"/>

<receiver android:name=".SMSReceiver">
      <intent-filter>
             <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
      </intent-filter>
</receiver>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>这个action需要自己敲出来,没有提示的,可能是出于某些原因,Google将他移除了。
然后就是在BroadcastReceiver中的onReceiver方法里面写自己需要的逻辑代码了
 public class SMSReceiver extends BroadcastReceiver {
     @Override
     public void onReceive(Context context, Intent intent) {
         Object objects[] = (Object[])intent.getExtras().get("pdus");
         for (Object pdu:objects){
             SmsMessage sm =  SmsMessage.createFromPdu((byte[]) pdu);
             String body = sm.getMessageBody();
             String address = sm.getOriginatingAddress();
             System.out.println(address+"  "+body);
         }
     }
 }

上面通过获得一个SmsMessage对象,获得短信的内容和地址。

(Android设备接收到的SMS是以pdu形式的)