Download presentation
Presentation is loading. Please wait.
Published byElisabeth Bruce Modified over 9 years ago
1
Android ICC Part II Inter-component communication
2
Broadcast Receivers BRs are app components that receive intents sent from the system and/or other apps A BR has to register with the Activity Manager and Package Manager Registration can be done through the The manifest file Programmatically
3
BR registration within Manifest
4
BR registration within Manifest Class responsible for processing the Intent Filter to specify what intents to receive
5
BR program. registration IntentFilter filter = new IntentFilter(); filter.addAction(``pacman.intent.action.BROADCAST’’); receiver = new BroadcastReceiver() f //@Override public void onReceive(Context context, Intent intent) { System.out.println(``message receivednn''); } }; registerReceiver(receiver, filter);
6
BR program. registration IntentFilter filter = new IntentFilter(); filter.addAction(``pacman.intent.action.BROADCAST’’); receiver = new BroadcastReceiver() f //@Override public void onReceive(Context context, Intent intent) { System.out.println(``message receivednn''); } }; registerReceiver(receiver, filter); Filter to specify what intents to receive Action performed when the intent is received Registration of the BR and filter
7
Registering Broadcast Receivers When BRs are registered programmatically generate REGISTER_RECEIVER_TRANSACTION ioctl to AM via Binder Registration through manifest does not generate any transactions
8
Broadcasting Intents To broadcast an intent the sendBroadcast API should be used Generates a BROADCAST_INTENT_TRANSACTION ioctl to AM through the Binder Intent intent = new Intent(``pacman.intent.action.BROADCAST''); intent.putExtra(``message'',''Wake up.''); sendBroadcast(intent);
9
Content Providers CPs are the components in an app responsible for storing data CPs must be declared in the manifest file using the tag CPs are accessed by URI: content:// /
10
Content Providers Access to a CP is handled by the AM Ioctl with GET_CONTENT_PROVIDER_TRANSACTION Specifying the authority The AM finds the suitable CP and sends back a handler to communicate directly with the CP Then the app can send URI along with the requested operations: QUERY_T, GET_TYPE_T, INSERT_T, DELETE_T, UPDATE_T, BULK_INSERT_T, OPEN_FILE_T, OPEN_ASSET_FILE_T
11
Service Manager The Service Manager is a special system service to keep track of the services available in a device An app that wants to provider a service to others can publish its service through the SM Communication to SM is done through Binder
12
Service Manager Commands The SM accepts the following commands: publish: takes two arguments – service name and address. This is used for publishing a service within the SM get/check: take one argument – service name. The SM returns a address of the service in the form of a handler list: this lists the service names registered with the SM
13
Service Manager in Action
14
Service Manager ioctl ioctl on /dev/binder with BINDER_WRITE_READ cmd:BC_TRANSACTION: target name = android.os.IServiceManager code = SVC_MGR_GET_SERVICE service name = isms
15
Final Thoughts Android ICC is both very powerful and flexible High-level API for dynamic interaction between apps Discovery of functionality on the fly If not protected properly it can lead to serious consequences
16
Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.