**
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();
}
}
}
本文介绍了Android中的自定义广播和本地广播的使用。在自定义广播部分,展示了如何发送带有附加数据的广播,以及创建BroadcastReceiver接收并打印这些数据。在本地广播部分,讲解了发送本地广播并使用BroadcastReceiver通过Toast显示接收数据的过程。
679

被折叠的 条评论
为什么被折叠?



