Android中BroadCaReceiver的基本用法(一)之监听系统广播

更新时间:2023-07-04 19:05:42 阅读: 评论:0

Android中BroadCaReceiver的基本⽤法(⼀)之监听系统
⼴播
注册⼴播分为:动态注册和静态注册。动态注册是通过Java代码注册,静态注册是指在l中注册。
如何创建⼀个⼴播接收器?
1、创建⼀个类继承⾃BroadCastReceiver。
2、重写其中的onReceive⽅法。
如何使⽤⼀个⼴播接收器?
1、创建⼀个监听器IntentFilter对象。
2、通过IntentFilter对象的addAction⽅法指明监听哪⼀个系统⼴播。
3、创建⼀个⼴播接收器对象。
4、通过registerReceiver⽅法注册⼴播接收器。
5、通过在onDestroy⽅法中调⽤unregisterReceiver⽅法取消当前⼴播接收器对象的注册。
例如:
package com.deepreality.broadcareceivertestdemo1;
t.BroadcastReceiver;
t.Context;
t.Intent;
t.IntentFilter;
import UnicodeSetSpanner;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Context mContext;
private IntentFilter intentFilter;
private NetWorkChangeReceiver netWorkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
tContentView(R.layout.activity_main);
baDataInit();
}
inc
underneathprivate void baDataInit() {
mContext = this;
//创建⼀个监听器并监听系统的⽹络状态的⼴播
intentFilter = new IntentFilter();
intentFilter.addAction("CONNECTIVITY_CHANGE");
//创建⼴播接收器
netWorkChangeReceiver = new NetWorkChangeReceiver();
//动态注册⼴播接收器
registerReceiver(netWorkChangeReceiver, intentFilter);
}
@Override
protected void onDestroy() {
unregisterReceiver(netWorkChangeReceiver);
}
/**
* 监听⽹络状态的⼴播接收器
*/
class NetWorkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(mContext, "NetWork changes", Toast.LENGTH_SHORT).show();        }
}
}
优化⼀下上⾯的监听⽹络状态的⼴播接收器:
/**
* 监听⽹络状态的⼴播接收器
*/
class NetWorkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Toast.makeText(mContext, "NetWork changes", Toast.LENGTH_SHORT).show();
//获取系统管理⽹络连接的服务类
the hangoverConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);        //获取⽹络连接的信息类实例
NetworkInfo networkInfo = ActiveNetworkInfo();
//通过isAvailable()判断当前是否有⽹络
if (networkInfo != null && networkInfo.isAvailable()) {
Toast.makeText(mContext, "NetWork is available!", Toast.LENGTH_SHORT).show();
} el {
Toast.makeText(mContext, "NetWork is unavailable!", Toast.LENGTH_SHORT).show();
}
}
}
特别注意:⼀定要加⽤户权限
<us-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<us-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
常⽤系统⼴播汇总:
Intent.ACTION_AIRPLANE_MODE_CHANGED;
//关闭或打开飞⾏模式时的⼴播
<strong>Intent.ACTION_BATTERY_CHANGED;
//充电状态,或者电池的电量发⽣变化
//电池的充电状态、电荷级别改变,不能通过组建声明接收这个⼴播,只有通过isterReceiver()注册
<strong>Intent.ACTION_BATTERY_LOW;
//表⽰电池电量低ointment
23个声母
<strong>Intent.ACTION_BATTERY_OKAY;
//表⽰电池电量充⾜,即从电池电量低变化到饱满时会发出⼴播
Intent.ACTION_BOOT_COMPLETED;
//在系统启动完成后,这个动作被⼴播⼀次(只有⼀次)。
Intent.ACTION_CAMERA_BUTTON;
//按下照相时的拍照按键(硬件按键)时发出的⼴播
Intent.ACTION_CLOSE_SYSTEM_DIALOGS;
//当屏幕超时进⾏锁屏时,当⽤户按下电源按钮,长按或短按(不管有没跳出话框),进⾏锁屏时,android系统都会⼴播此Action消息
Intent.ACTION_CONFIGURATION_CHANGED;
//设备当前设置被改变时发出的⼴播(包括的改变:界⾯语⾔,设备⽅向,等,请参考Configuration.java)
Intent.ACTION_DATE_CHANGED;
//设备⽇期发⽣改变时会发出此⼴播
Intent.ACTION_DEVICE_STORAGE_LOW;
//设备内存不⾜时发出的⼴播,此⼴播只能由系统使⽤,其它APP不可⽤?
Intent.ACTION_DEVICE_STORAGE_OK;
//设备内存从不⾜到充⾜时发出的⼴播,此⼴播只能由系统使⽤,其它APP不可⽤?
save//设备内存从不⾜到充⾜时发出的⼴播,此⼴播只能由系统使⽤,其它APP不可⽤?
Intent.ACTION_DOCK_EVENT;
//
//发出此⼴播的地⽅frameworks\ba\rvices\java\com\android\rver\DockObrver.java
Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE;
移动APP完成之后,发出的⼴播(移动是指:APP2SD)
Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE;
/
/正在移动APP时,发出的⼴播(移动是指:APP2SD)
Intent.ACTION_GTALK_SERVICE_CONNECTED;
//Gtalk已建⽴连接时发出的⼴播
Intent.ACTION_GTALK_SERVICE_DISCONNECTED;
//Gtalk已断开连接时发出的⼴播
Intent.ACTION_HEADSET_PLUG;
//在⽿机⼝上插⼊⽿机时发出的⼴播
Intent.ACTION_INPUT_METHOD_CHANGED;
//改变输⼊法时发出的⼴播
Intent.ACTION_LOCALE_CHANGED;csdn是什么意思
//设备当前区域设置已更改时发出的⼴播
Intent.ACTION_MANAGE_PACKAGE_STORAGE;
//
Intent.ACTION_MEDIA_BAD_REMOVAL;
//未正确移除SD卡(正确移除SD卡的⽅法:设置--SD卡和设备内存--卸载SD卡),但已把SD卡取出来时发出的⼴播//⼴播:扩展介质(扩展卡)已经从 SD 卡插槽拔出,但是挂载点 (mount point) 还没解除 (unmount)
Intent.ACTION_MEDIA_BUTTON;
//按下"Media Button" 按键时发出的⼴播,假如有"Media Button" 按键的话(硬件按键)
Intent.ACTION_MEDIA_CHECKING;
//插⼊外部储存装置,⽐如SD卡时,系统会检验SD卡,此时发出的⼴播?
Intent.ACTION_MEDIA_EJECT;
//已拔掉外部⼤容量储存设备发出的⼴播(⽐如SD卡,或移动硬盘),不管有没有正确卸载都会发出
此⼴播?
//⼴播:⽤户想要移除扩展介质(拔掉扩展卡)。
Intent.ACTION_MEDIA_MOUNTED;
//插⼊SD卡并且已正确安装(识别)时发出的⼴播
//⼴播:扩展介质被插⼊,⽽且已经被挂载。
Intent.ACTION_MEDIA_NOFS;
//
Intent.ACTION_MEDIA_REMOVED;
//外部储存设备已被移除,不管有没正确卸载,都会发出此⼴播?
// ⼴播:扩展介质被移除。
Intent.ACTION_MEDIA_SCANNER_FINISHED;
/
/⼴播:已经扫描完介质的⼀个⽬录
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE;
//
Intent.ACTION_MEDIA_SCANNER_STARTED;
//⼴播:开始扫描介质的⼀个⽬录
Intent.ACTION_MEDIA_SHARED;
// ⼴播:扩展介质的挂载被解除 (unmount),因为它已经作为 USB ⼤容量存储被共享。
Intent.ACTION_MEDIA_UNMOUNTABLE;
//
Intent.ACTION_MEDIA_UNMOUNTED
// ⼴播:扩展介质存在,但是还没有被挂载 (mount)。
Intent.ACTION_NEW_OUTGOING_CALL;
Intent.ACTION_PACKAGE_ADDED;
Intent.ACTION_PACKAGE_ADDED;
soft//成功的安装APK之后
//⼴播:设备上新安装了⼀个应⽤程序包。
//⼀个新应⽤包已经安装在设备上,数据包括包名(最新安装的包程序不能接收到这个⼴播)
Intent.ACTION_PACKAGE_CHANGED;
//⼀个已存在的应⽤程序包已经改变,包括包名
Intent.ACTION_PACKAGE_DATA_CLEARED;
//清除⼀个应⽤程序的数据时发出的⼴播(在设置--应⽤管理--选中某个应⽤,之后点清除数据时?)
//⽤户已经清除⼀个包的数据,包括包名(清除包程序不能接收到这个⼴播)
Intent.ACTION_PACKAGE_INSTALL;
//触发⼀个下载并且完成安装时发出的⼴播,⽐如在电⼦市场⾥下载应⽤?
//
Intent.ACTION_PACKAGE_REMOVED;
//成功的删除某个APK之后发出的⼴播
//⼀个已存在的应⽤程序包已经从设备上移除,包括包名(正在被安装的包程序不能接收到这个⼴播)
Intent.ACTION_PACKAGE_REPLACED;
//替换⼀个现有的安装包时发出的⼴播(不管现在安装的APP⽐之前的新还是旧,都会发出此⼴播?)
杭州音乐培训
Intent.ACTION_PACKAGE_RESTARTED;
//⽤户重新开始⼀个包,包的所有进程将被杀死,所有与其联系的运⾏时间状态应该被移除,包括包
名(重新开始包程序不能接收到这个⼴播)Intent.ACTION_POWER_CONNECTED;
//插上外部电源时发出的⼴播
Intent.ACTION_POWER_DISCONNECTED;
//已断开外部电源连接时发出的⼴播
Intent.ACTION_PROVIDER_CHANGED;
//
Intent.ACTION_REBOOT;
//重启设备时的⼴播
Intent.ACTION_SCREEN_OFF;
//屏幕被关闭之后的⼴播
Intent.ACTION_SCREEN_ON;
/
/屏幕被打开之后的⼴播
Intent.ACTION_SHUTDOWN;
//关闭系统时发出的⼴播
Intent.ACTION_TIMEZONE_CHANGED;
//时区发⽣改变时发出的⼴播
Intent.ACTION_TIME_CHANGED;
fixmbr//时间被设置时发出的⼴播
Intent.ACTION_TIME_TICK;
//⼴播:当前时间已经变化(正常的时间流逝)。
//当前时间改变,每分钟都发送,不能通过组件声明来接收,只有通过isterReceiver()⽅法来注册
Intent.ACTION_UID_REMOVED;
//⼀个⽤户ID已经从系统中移除发出的⼴播
//
Intent.ACTION_UMS_CONNECTED;
//设备已进⼊USB⼤容量储存状态时发出的⼴播?
Intent.ACTION_UMS_DISCONNECTED;
//设备已从USB⼤容量储存状态转为正常状态时发出的⼴播?
Intent.ACTION_USER_PRESENT;
//
Intent.ACTION_WALLPAPER_CHANGED;
//设备墙纸已改变时发出的⼴播

本文发布于:2023-07-04 19:05:42,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/167061.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:发出   状态   设备   改变   注册   介质   不能
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图