1.介绍
2.实现方法
3.注册广播
(1)静态广播
在AndroidManifest.xml文件中注册广播
<intent-filter>为过滤器
<receiver android:name=".MyBroadCast1"></receiver>
<receiver android:name=".MyBroadCast2">
<intent-filter>
<action android:name="com.lucky"></action>
</intent-filter>
</receiver>
(2)动态广播
4.静态广播代码
(1)主界面
package com.lucky.test40broadcastreceiver; import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; public class MainActivity extends AppCompatActivity {
Button button1;
Button button2; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1=findViewById(R.id.button);
button2=findViewById(R.id.button2);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,MyBroadCast1.class);
sendBroadcast(intent); //发送广播
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//设置Action为com.lucky,会在AndroidManifest.xml中的receiver中启动action为com.lucky的广播
Intent intent=new Intent();
intent.setAction("com.lucky");
sendBroadcast(intent);
}
});
}
}
(2)广播接收器1(采用Toast语句进行提示)
package com.lucky.test40broadcastreceiver; import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast; //MyBroadCast1广播接收器
public class MyBroadCast1 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"接收到广播",Toast.LENGTH_SHORT).show();
}
}
(3)广播接收器2(采用通知的方式进行提示)
package com.lucky.test40broadcastreceiver; import android.app.Notification;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.annotation.RequiresApi; public class MyBroadCast2 extends BroadcastReceiver {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onReceive(Context context, Intent intent) {
//采用通知的形式
NotificationManager manager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification.Builder builder=new Notification.Builder(context);
builder.setSmallIcon(R.mipmap.ic_launcher); //给通知设置图标
builder.setTicker("广播消息"); //设置提示消息
builder.setContentTitle("您有一条广播消息");//设置内容标题
builder.setContentText("hello lucky"); //设置通知内容
manager.notify(0x01,builder.build()); //让通知显示
}
}
5.动态广播
(1)主界面
package com.lucky.test41broadcastreceiver2; import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; public class MainActivity extends AppCompatActivity {
Button button1;
MyBroadCast myBroadCast; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1=findViewById(R.id.button); //注册广播
myBroadCast=new MyBroadCast(); //实例化广播接收器
IntentFilter intentFilter=new IntentFilter();//实例化一个过滤器
intentFilter.addAction("com.lucky"); //添加action来明确接收哪种类型的广播
registerReceiver(myBroadCast,intentFilter);//注册广播 button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//发送广播
Intent intent=new Intent();
intent.setAction("com.lucky");
sendBroadcast(intent);
}
});
}
}
(2)广播接收器
package com.lucky.test41broadcastreceiver2; import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast; public class MyBroadCast extends BroadcastReceiver { @Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"hello lucky",Toast.LENGTH_SHORT).show();
}
}