**
1、 自定义广播:
**
(1) 发送一个自定义广播,在intent中附加数据(putExtra方法),key为”extraKey”,value为”CustomValue”
(2) 新创建一个项目,创建BroadcastReceiver子类,接收1中发出的自定义广播,并将附加的数据用log.d打印出来
步骤:新建项目BroadcastTest,在包名处右键新建广播接收器,命名为MyBroadcastReceiver,勾选Exported和Enabled
运行截图:
代码:
MainActivity.java
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button
button1=(Button)findViewById(R.id.button);
button1.setOnClickListener(new View.OnClickListener(){
public void onClick(View
v){
Intent intent=new Intent();
intent.setAction("com.example.lenovo.broadcasttest.MY_BROADCAST");
intent.putExtra("extraKey","CustomValue");
sendBroadcast(intent);
}
});
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
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="com.example.lenovo.broadcasttest.MainActivity">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="自定义广播"/>
</RelativeLayout>
MyBroadCastReceiver.java
<receiver
android:name=".MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.lenovo.broadcasttest.MY_BROADCAST"/>
</intent-filter>
</receiver>
**
2、 本地广播:
**
(1)
发送一个本地广播,在intent中附加数据(putExtra方法),key为” extraKey”,value为”LocalValue”
(2)
创建一个BroadcastReceiver子类,接收广播并以Toast显示接收到的值
运行截图:
代码:
MainActivity.java
public class MainActivity extends AppCompatActivity
{
private IntentFilter
intentFilter;
private LocalReceiver
localReceiver;
private LocalBroadcastManager
localBroadcastManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); localBroadcastManager=LocalBroadcastManager.getInstance(this);
Button
button2=(Button)findViewById(R.id.button);
button2.setOnClickListener(new View.OnClickListener(){
public void onClick(View
v){
Intent intent=new Intent();
intent.setAction("com.example.lenovo.broadcasttest.LOCAL_BROADCAST");
intent.putExtra("extraKey","LocalValue");
localBroadcastManager.sendBroadcast(intent);
}
});
intentFilter=new IntentFilter();
intentFilter.addAction("com.example.lenovo.broadcasttest.LOCAL_BROADCAST");
localReceiver=new LocalReceiver();
localBroadcastManager.registerReceiver(localReceiver,intentFilter);
}
protected void onDestory(){
super.onDestroy();
localBroadcastManager.unregisterReceiver(localReceiver);
}
class LocalReceiver
extends BroadcastReceiver{
public void onReceive(Context
context,Intent intent){
Toast.makeText(context,"received local broadcast",Toast.LENGTH_SHORT).show();
}
}
}