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

废话就不说了,新建类继承,然后配置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方法里面写自己需要的逻辑代码了
 1 public class SMSReceiver extends BroadcastReceiver {
 2     @Override
 3     public void onReceive(Context context, Intent intent) {
 4         Object objects[] = (Object[])intent.getExtras().get("pdus");
 5         for (Object pdu:objects){
 6             SmsMessage sm =  SmsMessage.createFromPdu((byte[]) pdu);
 7             String body = sm.getMessageBody();
 8             String address = sm.getOriginatingAddress();
 9             System.out.println(address+"  "+body);
10         }
11     }
12 }

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

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

 


 
GitHub:https://github.com/godfunc
博客园:http://www.cnblogs.com/godfunc
Copyright ©2019 Godfunc
原文地址:https://www.cnblogs.com/Godfunc/p/6019371.html