搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
煮酒与君饮
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
如何在github上提交PR(Pull Request)_githib pr rebase
2
ISO26262汽车功能安全ASIL案例分析_功能安全asil b 硬件设计要求
3
黑龙江大学计算机考研资料汇总_黑大909和903的区别
4
python 入门语法复习(一)
5
Docker Compose部署Kafka集群并在宿主机Windows连接开发_docker-compose部署kafka集群
6
二分查找算法详解(查找左右端点二分)_二分查找左端点
7
docker使用实例_docker start foo
8
Matlab intersect函数用法:_matlab中intersects函数用法
9
【KNX技术在中国智能家居和楼宇控制领域的应用与发展】_knx 沈璞
10
关于jupyter notebook、pytorch、cuda、anaconda的一些问题(更新中)_jupyter notebook 未安装cuda
当前位置:
article
> 正文
Android 广播BroadcastReceiver基础----重新认识Android(13)_android. 13网络变化广播
作者:煮酒与君饮 | 2024-08-06 01:04:30
赞
踩
android. 13网络变化广播
* 广播接收者创建的步骤:
* 1. 创建BroadcastReceiver的子类;
* 2. 实现 onReceive() 方法;
* 3. 确定接收哪些类型的广播
*
* 3.1 接收的广播实际上,就是 Intent,其中包含 action
* 3.2 action 就是广播的类型
*ACTION_BATTERY_CHANGED----电池广播
* 4. 在清单文件或者代码中 进行注册,接收指定的广播;
*
* 4.1 在清单文件中,把 action 注册上就可以接收指定的广播了
// 广播接收者可以使用 abortBroadcast() 方法来终止广播的继续传递
abortBroadcast();
* 当广播接收者,接收到广播消息的时候,
* 会自动回调这个方法
*
* Intent 参数就是广播的信息
public void onReceive(Context context, Intent intent)
// 1. 常量内容,代表网络发生变化的广播类型
// android.net.conn.CONNECTIVITY_CHANGE
//ConnectivityManager.CONNECTIVITY_ACTION
// 2. 当 网络发生变化,onReceive 就会被执行
// 3. 检测网络状态
// 3.1 获取网络连接的管理器
// 需要访问网络状态的权限
ConnectivityManager manager =
(ConnectivityManager)
context.getSystemService(
Context.CONNECTIVITY_SERVICE
);
// 3.2 获取当前的网络连接信息
NetworkInfo info = manager.getActiveNetworkInfo();
if(info != null){
// 代表有网络连接
// 获取网络类型 支持手机、WiFi、蓝牙
int type = info.getType();
// 详细的网络类型
int subtype = info.getSubtype();
// 使用 ConnectivityManager 中 TYPE_XXX 常量
// 可以判断网络的类型
switch (type){
case ConnectivityManager.TYPE_MOBILE:
Log.d("Receiver", "手机网络");
break;
case ConnectivityManager.TYPE_WIFI:
Log.d("Receiver", "WiFi");
break;
}
}else{
// 代表没有网络连接
Log.d("Receiver", "无连接");
}
接收短信的广播--------------------------------------------
* 接收短信的广播,短信广播是有序广播,一个接收者处理完成之后
* 下一个接收者才会收到广播;
* 1. 创建接收者
* 2. 确认接收的广播的action; android.provider.Telephony.SMS_RECEIVED
* 3. 静态注册
* 4. 需要声明权限:接收短信的权限
public void onReceive(Context context, Intent intent)
// 接收短信
// 短信的数据全部保存在 intent中;
// 保存的数据是一个对象数组,内部真实的数据是 二维数组;
// 数据的 key 是 "pdus"
Bundle b = intent.getExtras();
// 获取收到的短信数据
Object obj = b.get("pdus");
Log.d("MessageReceiver", "obj = " + obj);
// 处理短信的数据结构
byte[][] data = (byte[][]) obj;
// 二维数组中,每一个数组元素,就是一个短信的数据
for (byte[] pdu : data) {
// pdu 是短信规范中的格式,Android 可以直接使用API来获取短信内容
SmsMessage msg = SmsMessage.createFromPdu(pdu);
// 获取发件人
String address = msg.getDisplayOriginatingAddress();
// 获取短信文本内容;
String body = msg.getDisplayMessageBody();
// 短信黑名单 根据 address 来处理
Log.d("MessageReceiver", address+"->"+body);
}
// 广播接收者可以使用 abortBroadcast() 方法来终止广播的继续传递
abortBroadcast();
有序无序广播----------------------------------------------------------
<!-- 接收短信的权限 -->
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<receiver android:name=".MessageReceiver">
<!--
一定要注意,短信接收者必须要设置优先级,
否则就接收不到短信,优先级最高 1000
-->
<intent-filter android:priority="1000">
<!-- 接收短信,需要声明权限 -->
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
public void sendNormalBroadcast(View view) {
// 发送无序广播,参数 Intent 就是 广播接收者收到的Intent
// Intent 中必须设置 action
// action 可以自定义
Intent intent = new Intent("com.qianfeng.brdemo.ACTION_1");
// Intent 中的 action 参数,
// 就是 广播接收者需要声明的 那个 action 属性的值
sendBroadcast(intent);
}
public void sendOrderedBroadcast(View view) {
// 发送有序的广播
Intent intent = new Intent("com.qianfeng.brdemo.ACTION_1");
// 参数1: 广播的数据 Intent
// 参数2: 有序广播设置的接收者权限;如果权限设置为
// null 代表不检查权限;
// 如果设置字符串,那么广播接收者同样必须设置权限属性
sendOrderedBroadcast(intent, null);
}
public void sendSticky(View view){
//sendStickyBroadcast();
}
// 能够终止有序广播的传递;
// 如果收到的广播是无序的,那么这个方法没有作用
// 如果广播消息是无需的,那么abortBroadcast内部会打印一个异常;
// 不会影响代码逻辑
---开机自启动-------------------------------------------------------
<!-- 用于接收启动广播的 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver
android:name=".BootReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<!--
接收手机启动成功之后,发送的广播消息
用于自动启动程序:通常启动的就是程序的服务;
自动启动需要设置权限
-->
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
/**
* 实现开机自动启动(根据手机不同,效果不同)
* 1. 创建接收者
* 2. 确认开机启动的 ACTION
* 3. 静态注册
* 4. 需要设置开机启动权限
*/
public class BootReceiver extends BroadcastReceiver {
public BootReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
// 开机启动的ACTION
// Intent.ACTION_BOOT_COMPLETED;
// 使用存储卡挂载也可以实现自动启动程序
//Intent.ACTION_MEDIA_MOUNTED
Log.d("BootReceiver", "手机启动了,我也被调用了");
}
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/煮酒与君饮/article/detail/935121
推荐阅读
article
android
.
suppor
t
.v7.
appcompa
t
,报错 Didn'
t
find
class
'...
照着第一行代码实例敲的,在第8章使用通知的实例代码中卡住了。具体代码MainAc
t
ivi
t
ypublic
class
M...
赞
踩
article
android
WebView
_
data
android
:
name
="
android
.w...
Skip to content DevelopersDESIGN DEVELOP DISTRIBUTEPLAY 控制台n...
赞
踩
article
解决
android
客户端异常:Failed
resolution
of: Lorg/
apache
...
近期在测试 APP 项目时,调用上传图片接口时,发现客户端报以下错误:java.lang.NoClassDefFound...
赞
踩
article
Android
Studio
中新建
的
工程中使用了
Module
,从
app
中去调用
Module
中
的
东西,...
如图,新建
的
一个新
项目
中,通过
app
中
的
MainActivity去调外部库类
Module
中
的
类,需要修改
app
下边
的
bu...
赞
踩
article
Android
module
打包成
aar
或
jar
_
android
module
打包
aar
...
新建moudle 点击assemble 编译即可生成的
aar
在该路径下使用:导入
aar
到libs下 在gradle下引入...
赞
踩
article
Android
studio
将
Module
打包
成
Jar
包_
android
studio
单...
Android
studio
将
Module
打包
成
Jar
包_
android
studio
单模块
打包
androi...
赞
踩
article
Android
进阶——组件化开发实践(二)_new
module
phone
&
table
and...
一个新的组件的基本配置,调试准备_new
module
phone
&
table
android
library
new...
赞
踩
article
Android
Studio
项目概览_
android
studio
module
包含资源...
Android
Studio
中的一个项目包含您为应用定义工作区所需的一切内容,从源代码和资源到测试代码和构建配置,应有...
赞
踩
article
Android
SDK
开发1将完整
项目
或Module打包
成
aar
_怎么打
成
一个
aar
...
由于公司
项目
需要把完整App打包
成
一个
aar
包,提供给其他合作厂商进行集
成
内嵌,外部厂商需要有自己的壳工程和相应的App...
赞
踩
article
Android
Studio
之修改
module
名称_
androidstudio
修改
module
名字...
当我们第一次创建一个project,
Android
Studio
会自动帮我们创建一个app的
module
,这里的modu...
赞
踩
article
iOS
android
git
.
git
ignore
文件
的常见写法_
ios
.
git
ignore
...
cat .
git
ignore
//这里是写法 把不必要的垃圾
文件
过滤掉xcuserdata/Pods*.xcworksp...
赞
踩
article
android
开发/
测试人员
常用
adb
命令
_
adb
连接
设备
后进入...
前一篇整理了如何删除预装app, 发现
android
开发人员和QA 有必要掌握一些常用
adb
使用方法1,
连接
某
设备
...
赞
踩
article
Android
studio
连接
测试
机简记_
android
studio
接口
测试
...
因为公司配的办公笔记本电脑不允许更改系统变量,所以可以通过该方法进行安装, 执行 adb version 即可。首先找到...
赞
踩
article
Android 10.0
Launcher
启动
流程...
在前面SystemUI
启动
流程中说到,在SystemServer中会去
启动
各种系统服务,这里的launcher也是
启动
的...
赞
踩
article
android
wifi
adb
连接不上,
WIFI
无线
adb
调试
android
...
有个需求需要支持
android
插上键盘,鼠标等外设,但是这样就不能使用microusb口进行
adb
调试了。研究了一番,发...
赞
踩
article
【坑】
Android
Studio
占用
CPU
过高问题解决_
android
studio
占用cpu高...
解决
Android
Studio
占用
CPU
过高问题_
android
studio
占用cpu高
android
studio
...
赞
踩
article
Android
标准
语音
识别
框架:
SpeechRecognizer
|
开发者
说·
DTalk
...
本文原作者:小虾米君,原文发布于:TechMerger前言本文将向您介绍如何向系统提供
语音
识别
的 SpeechRecog...
赞
踩
article
Android
标准
语音
识别
框架
:
SpeechRecognizer
的封装和
调用
...
此前,笔者梳理了
语音
如何打造车载
语音
交互
:
Google Voice Interaction 给你答案
:
介绍的是 3rd ...
赞
踩
article
最好的 4 个
Android
屏幕
解锁
锁软件免费下载_
unlockgo
(
android
)下载...
实际上,如今每个
Android
智能手机用户都将手机设置为图案锁定。此功能可以保护隐私,特别是当用户不在打电话时。通过...
赞
踩
article
2024年最全推荐
一个
Flutter
项目(已开源),
android
面试
算法_开源
的
flutter
项...
对于程序员来说,要学习
的
知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境...
赞
踩
相关标签
android.support.v7.appcompat
android
WebView
android studio
jar
java
kotlin
gradle
ios
git
android QA
查看android内存
清除android缓存
adb
android runtime
android wifi adb连接不上
ide