How to use Local BroadCast Manager in Android?

Here is source code of the Program demonstrate Local Broadcast Manager in Android. The program is successfully compiled and run on a Windows system using Eclipse Ide. The program output is also shown below.

The Local Broadcast Manager was introduced to the Android Support Library to simplify the process of registering for, and sending, Broadcast Intents between components within your application.
Because of the reduced broadcast scope, using the Local Broadcast Manager is more efficient than sending a global broadcast. It also ensures that the Intent you broadcast cannot be received by any components outside your application, ensuring that there is no risk of leaking private or sensitive data, such as location information.

Similarly, other applications can’t transmit broadcasts to your Receivers, negating the risk of these Receivers becoming vectors for security exploits.
To use the Local Broadcast Manager, you must first include the Android Support Library in your application, in order to do so open your sdk and locate Extras and click to download package Android Support Library.

sdk_localbroadcast_manager

Main Activity

 
package com.example.localbroadcastmanager;
 
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.support.v4.content.LocalBroadcastManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
public class MainActivity extends Activity implements OnClickListener {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button b1 = (Button) findViewById(R.id.button1);
        b1.setOnClickListener(this);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        sendBroadcast();
        startActivity(new Intent("android.intent.action.Activityone"));
 
    }
 
    public void sendBroadcast() {
        Intent intent = new Intent("send");
        intent.putExtra("current speed", "102.4");
        intent.putExtra("latitude", "12.2342342");
        intent.putExtra("longitude", "12.21124");
        LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
    }
}

ActivityOne

advertisement
advertisement
package com.example.localbroadcastmanager;
 
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;
import android.widget.TextView;
 
public class Activityone extends Activity{
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layoutone);
    }
 
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        LocalBroadcastManager.getInstance(this).unregisterReceiver(message);
    }
 
    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        LocalBroadcastManager.getInstance(this).registerReceiver(message,
                new IntentFilter("send"));
    }
 
    private BroadcastReceiver message = new BroadcastReceiver() {
 
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            Double speed_received = intent.getDoubleExtra("current speed", 10);
            Double latittude_received = intent.getDoubleExtra("latitude", 0);
            Double longitude_received = intent.getDoubleExtra("longitude",0);
 
            TextView speed = (TextView)findViewById(R.id.textView1);
            speed.setText("speed :    "+ speed_received);
 
            TextView latitude = (TextView)findViewById(R.id.textView2);
            latitude.setText("latitude :   "+ latittude_received);
 
            TextView longitude = (TextView)findViewById(R.id.textView3);
            longitude.setText("longitude :    "+ longitude_received);
        }
    };
}

Activity_main.xml

Note: Join free Sanfoundry classes at Telegram or Youtube
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
 
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:text="BroadCast" />
 
</RelativeLayout>

LayoutOne.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:text="TextView"
        android:layout_marginTop="30dp"
        android:textSize="20dp" />
 
    <TextView
        android:id="@+id/textView2"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:text="TextView"
        android:layout_marginTop="50dp"
        android:textSize="20dp" />
 
    <TextView
        android:id="@+id/textView3"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:text="TextView"
        android:layout_marginTop="70dp"
        android:textSize="20dp" />
 
 
</LinearLayout>

local_broadcast_manager

advertisement

Sanfoundry Global Education & Learning Series – 100+ Java Android Tutorials.

If you wish to look at all Tutorials, go to Java Android Tutorials.

advertisement
If you find any mistake above, kindly email to [email protected]

advertisement
advertisement
Subscribe to our Newsletters (Subject-wise). Participate in the Sanfoundry Certification contest to get free Certificate of Merit. Join our social networks below and stay updated with latest contests, videos, internships and jobs!

Youtube | Telegram | LinkedIn | Instagram | Facebook | Twitter | Pinterest
Manish Bhojasia - Founder & CTO at Sanfoundry
Manish Bhojasia, a technology veteran with 20+ years @ Cisco & Wipro, is Founder and CTO at Sanfoundry. He lives in Bangalore, and focuses on development of Linux Kernel, SAN Technologies, Advanced C, Data Structures & Alogrithms. Stay connected with him at LinkedIn.

Subscribe to his free Masterclasses at Youtube & discussions at Telegram SanfoundryClasses.