Presentation is loading. Please wait.

Presentation is loading. Please wait.

Android ICC Part II Inter-component communication.

Similar presentations


Presentation on theme: "Android ICC Part II Inter-component communication."— Presentation transcript:

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?


Download ppt "Android ICC Part II Inter-component communication."

Similar presentations


Ads by Google