Android icc part ii
This presentation is the property of its rightful owner.
Sponsored Links
1 / 16

Android ICC Part II PowerPoint PPT Presentation


  • 93 Views
  • Uploaded on
  • Presentation posted in: General

Android ICC Part II. Inter-component communication. 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

Download Presentation

Android ICC Part II

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Android icc part ii

Android ICC Part II

Inter-component communication


Broadcast receivers

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


Br registration within manifest

BR registration within Manifest

<receiver android:name=''MsgListener'' >

<intent-filter>

<action android:name=''pacman.intent.action.BROADCAST'' />

</intent-filter>

</receiver>


Br registration within manifest1

BR registration within Manifest

<receiver android:name=''MsgListener'' >

<intent-filter>

<action android:name=''pacman.intent.action.BROADCAST'' />

</intent-filter>

</receiver>

Class responsible for processing the Intent

Filter to specify what intents to receive


Br program registration

BR program. registration

IntentFilter filter = new IntentFilter();

filter.addAction(``pacman.intent.action.BROADCAST’’);

receiver = new BroadcastReceiver() f

[email protected] public void onReceive(Context context, Intent intent)

{

System.out.println(``message receivednn'');

}

};

registerReceiver(receiver, filter);


Br program registration1

BR program. registration

Filter to specify what intents to receive

IntentFilter filter = new IntentFilter();

filter.addAction(``pacman.intent.action.BROADCAST’’);

receiver = new BroadcastReceiver() f

[email protected] public void onReceive(Context context, Intent intent)

{

System.out.println(``message receivednn'');

}

};

registerReceiver(receiver, filter);

Action performed when the intent is received

Registration of the BR and filter


Registering broadcast receivers

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


Broadcasting intents

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);


Content providers

Content Providers

  • CPs are the components in an app responsible for storing data

  • CPs must be declared in the manifest file using the <provider> tag

  • CPs are accessed by URI:

    • content://<authority>/<resource>


Content providers1

Content Providers

  • Access to a CP is handled by the AM

  • Ioctlwith 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


Service manager

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


Service manager commands

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


Service manager in action

Service Manager in Action


Service manager ioctl

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


Final thoughts

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


Questions

Questions?


  • Login