Download - Broadcast Receiver
Broadcast Receiver
Android application development
Application Building Blocks
•UI Component Typically Corresponding to one screen.
Activity
•Responds to notifications or status changes. Can wake up your process.
IntentReceiver
•Faceless task that runs in the background.
Service
•Enable applications to share data.
ContentProvider
Android Application Anatomy
Activities1. Provides User Interface2. Usually represents a Single Screen
3. Can contain one/more Views4. Extends the Activity Base class
Services1. No User Interface
2. Runs in Background3. Extends the Service Base Class
Application= Set of Android Components
Content Provider1. Makes application data available
to other apps2. Data stored in SQLite database3. Extends the ContentProvider
Base class
Intent/Broadcast Receiver1. Receives and Reacts to broadcast
Intents2. No UI but can start an Activity
3. Extends the BroadcastReceiver Base Class
Broadcast Receivers1. A broadcast receiver is a component that responds to system-wide
Broadcast announcements. 2. Many broadcasts originate from the system—for example, a
Broadcast announcing that the screen has turned off, the battery is low, or a picture was captured or an SMS is received.
3. Applications can also initiate broadcasts—for example, to let other Applications know that some data has been downloaded to the device and is available for them to use.
4. Although broadcast receivers don't display a user interface, they may create a status bar notification to alert the user when a broadcast event occurs.
5. More commonly, though, a broadcast receiver is just a "gateway" to other components and is intended to do a very minimal amount of work. For instance, it might initiate a service/or start an activity to perform some work based on the event.
Android Application Anatomy
UI
Activity 1
Service
Activity 2
BroadcastReceiver
OS
BIG PICTURE
Intents1. Directed Intents2. Broadcast Intents
Broadcast Receivers1. We’ll use a Broadcast Receiver to capture SMS receive event2. We capture the SMS receive event and launch an Activity to show the sms and give user an option to reply the SMS
Activity
BroadcastReceiverOS
Broadcast Receivers1. Create a new project BroadcastReceiverDemo2. A broadcast receiver is implemented as a subclass of BroadcastReceiver and each
broadcast is delivered as an Intent object. In this case the intent is detected by android.provider.Telephony.SMS_RECEIVED
To do this we’ll create a class SMSReceiver that extends BroadcastReceiver class and define the method onReceive()
BroadcastReceiver
Broadcast Receivers (Contd.)
3. We also need to add SMSReceiver as receiver of a particular Intent (SMS received) which is identified by android.provider.Telephony.SMS_RECEIVED
BroadcastReceiver
Broadcast Receivers (Contd.)
4. Also we have to add permission for receiving SMS
BroadcastReceiver
Broadcast Receivers (Contd.)
5. Now we run the application6. Now we use emulator control to send sms
Receiving SMSBundle bundle = intent.getExtras(); SmsMessage[] msgs = null;String str = "";String address="";if (bundle != null){//---retrieve the SMS message received---Object[] pdus = (Object[]) bundle.get("pdus");msgs = new SmsMessage[pdus.length];for (int i=0; i<msgs.length; i++) { msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); str += "SMS from " + msgs[i].getOriginatingAddress(); str += " :"; str += msgs[i].getMessageBody().toString(); str += "\n"; address=msgs[i].getOriginatingAddress(); Toast.makeText(context, str, Toast.LENGTH_LONG).show();
}
Sending SMS1. Add permission in menifest.xml
2. We add the following code for sending SMS from anywhere of our application
Exercise
We’ll create a replica of SMS application of Android
1. Application will have a basic TabActivity with 3 tabs (Activities)1. Send- will give user option to send sms (2 input fields for
number and text)All sent SMS will be saved in database
2. Inbox- (List Activity) which will fetch all received SMS from database
3. Sent- (ListActivity) which will fetch all sent SMS2. A broadcast receiver which will receive SMS and save them to
database
Thank You.