035 Android 广播(BroadCastReceiver)
2024-08-26 22:19:22
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();
}
}
最新文章
- REDHAT一总复习1 输出重定向及head tail的用法
- gnuWin32-mini-2016.10.30
- 【转】Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码
- java 字符串判断是否相等
- Information
- [docker] 管理docker容器中的数据
- android 项目学习随笔十五(ShareSDK开放平台)
- ubuntu 修改主机名
- linux_jvm_jhat_dump内存分析
- WPF使用第三方的字体(TTF文件)
- AOP Aspect Oriented Programming
- HDOJ 1018 Big Number(大数位数公式)
- UVa 12683 Odd and Even Zeroes(数论+数字DP)
- python第五天
- PHP初入--表单元素
- LeetCode 121. Best Time to Buy and Sell Stock (买卖股票的最好时机)
- 【翻译】Ext JS最新技巧——2015-1-2
- 从壹开始前后端分离【 .NETCore2.1 +Vue 2 +AOP+DI】框架之一 || 前言
- JSP Ueditor 实现图片跨域上传
- 朱晔的互联网架构实践心得S1E2:屡试不爽的架构三马车
热门文章
- KillTimer不能放在析构函数,可以放在DestroyWindow函数里
- [代码审计]PHP_Bugs题目总结(1)
- 小程序弹框wx.showModal的使用
- #C++初学记录(贪心算法#二分查找)
- 微信小程序丨将溢出的文本用省略号代替的方法
- SpringBoot整合Hibernate
- Android输入法遮挡了输入框,使用android:fitsSystemWindows=";true";后界面顶部出现白条解决方案
- ifc osg施工现场模拟
- Qt连接数据库
- opencv4 mask_rcnn模型调(c++)