1.Activity
package com.alan.broadcast1; import android.content.IntentFilter; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; /** * Created by CanxinQiu on 2016/9/1. * Description: Broadcast lesson, register receiver in Java code * SMS_RECEIVED example * */ public class MainActivity extends AppCompatActivity { private MyReceiver myReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IntentFilter filter = new IntentFilter(); filter.addAction("android.provider.Telephony.SMS_RECEIVED"); myReceiver = new MyReceiver(); registerReceiver(myReceiver,filter); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(myReceiver); } }
2.BroadcastReceiver
/* * Copyright (c) 2016 All Rights Reserved By FFCS */ package com.alan.broadcast1; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.util.Log; /** * Created by CanxinQiu on 2016/8/31. * Description: Broadcast lesson, is listen system,include register receiver in Manifest * and in BroadcastReceiver to receive the action,than do something. * SMS_RECEIVED example */ public class MyReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Log.i("Broadcast","Received SMS_Message"); //get sms data,send to broadcast receiver Bundle bundle = intent.getExtras(); //pdus is the data's key,so that to get data,that is array form Object object [] = (Object[])bundle.get("pdus"); //only include 140 byte,if sms's data may too long , // that we shall create a array which length suitable SmsMessage [] messages = new SmsMessage[object.length]; for (int i = 0; i < messages.length; i++) { messages[i] = SmsMessage.createFromPdu((byte [])object [i]); //get message content Log.i("SMS body",messages[i].getMessageBody()); } //get sender's number,number is at the beginning of message array Log.i("SMS_TELPHONE NUMBER",messages[0].getOriginatingAddress()); } }