三、随系统启动而启动的服务
1、创建SmsReceiver
public class SmsReceiver extends BroadcastReceiver {
private String user = "110";
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras() ;
Log.i("info",bundle+"") ;
Object[] pduses= (Object[])bundle.get("pdus");
for(Object pdus: pduses){
byte[] pdusmessage = (byte[])pdus;
SmsMessage sms = SmsMessage.createFromPdu(pdusmessage);
String mobile = sms.getOriginatingAddress();//发送短信的手机号码
if(mobile.equals(user)){
this.abortBroadcast();//实现短信拦截
return;
}
String content = sms.getMessageBody(); //短信内容
Date date = new Date(sms.getTimestampMillis());
Log.i("info","mobile:" +mobile+"content:" +content+"date:" +date);
}
}
}
2、创建接受BOOT_COMPLETED广播的Receiver( BootCmpReceiver),在其中注册一个SmsReceiver。
context.getApplicationContext()非常重要。
3、在BootCmpReceiver的onReceiver中启动注册SmsReceiver
public class BootCmpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
BroadcastReceiver smsReceiver = new SmsReceiver() ;
Log.i("info", ""+smsReceiver) ;
context.getApplicationContext().registerReceiver(smsReceiver,
new IntentFilter("android.provider.Telephony.SMS_RECEIVED")) ;
}
}
manifest中需要配置
<receiver android:name=".BootCmpReceiver">
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>