释放双眼,带上耳机,听听看~!
以下是常用系统action
系统操作
action
监听网络变化
android.net.conn.CONNECTIVITY_CHANGE
关闭或打开飞行模式
Intent.ACTION_AIRPLANE_MODE_CHANGED
充电时或电量发生变化
Intent.ACTION_BATTERY_CHANGED
电池电量低
Intent.ACTION_BATTERY_LOW
电池电量充足(即从电量低变化到饱满时会发出广播
Intent.ACTION_BATTERY_OKAY
系统启动完成后(仅广播一次)
Intent.ACTION_BOOT_COMPLETED
按下照相时的拍照按键(硬件按键)时
Intent.ACTION_CAMERA_BUTTON
屏幕锁屏
Intent.ACTION_CLOSE_SYSTEM_DIALOGS
设备当前设置被改变时(界面语言、设备方向等)
Intent.ACTION_CONFIGURATION_CHANGED
插入耳机时
Intent.ACTION_HEADSET_PLUG
未正确移除SD卡但已取出来时(正确移除方法:设置–SD卡和设备内存–卸载SD卡)
Intent.ACTION_MEDIA_BAD_REMOVAL
插入外部储存装置(如SD卡)
Intent.ACTION_MEDIA_CHECKING
成功安装APK
Intent.ACTION_PACKAGE_ADDED
成功删除APK
Intent.ACTION_PACKAGE_REMOVED
下载并且成功安装
intent.action.PACKAGE_INSTALL
重启设备
Intent.ACTION_REBOOT
屏幕被关闭
Intent.ACTION_SCREEN_OFF
屏幕被打开
Intent.ACTION_SCREEN_ON
关闭系统时
Intent.ACTION_SHUTDOWN
重启设备
Intent.ACTION_REBOOT
那我们如何使用呢
动态注册方式:
public class MainActivity extends Activity {
private ScreenReceiver screenReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//动态的去注册广播接收者
screenReceiver = new ScreenReceiver();
//创建IntentFilter 对象
IntentFilter filter = new IntentFilter();
//添加要注册的action
filter.addAction("android.intent.action.SCREEN_OFF");
filter.addAction("android.intent.action.SCREEN_ON");
//动态注册广播接收者
registerReceiver(screenReceiver, filter);
}
@Override
protected void onDestroy() {
//当activity 销毁的时候要取消注册广播接收者
unregisterReceiver(screenReceiver);
super.onDestroy();
}
}
public class ScreenReceiver extends BroadcastReceiver {
//当我们进行屏幕锁屏和解锁 这个方法执行
@Override
public void onReceive(Context context, Intent intent) {
//获取当前广播的事件类型
String action = intent.getAction();
if("android.intent.action.SCREEN_OFF".equals(action)){
System.out.println("屏幕锁屏了 ");
}else if ("android.intent.action.SCREEN_ON".equals(action)) {
System.out.println("屏幕解锁了");
}
}
}
静态注册
直接写BroadcastReceiver文件,MainAndroidfast.XML配置
public class SdcardStateReceiver extends BroadcastReceiver {
//当sd状态发生改变的时候执行
@Override
public void onReceive(Context context, Intent intent) {
//获取到当前广播的事件类型
String action = intent.getAction();
if ("android.intent.action.MEDIA_MOUNTED".equals(action)) {
System.out.println("说明sd卡挂载了 ....");
}else if ("android.intent.action.MEDIA_UNMOUNTED".equals(action)) {
System.out.println("说明sd卡卸载了 ");
}
}
}