在Android开发中,有些系统广播是不能在清单文件中静态注册的,只能通过registerReceiver方法进行动态注册(Android文档这样描述:You cannot receive this through components declared in manifests, only by explicitly registering for it with {@link Context#registerReceiver(BroadcastReceiver, IntentFilter) Context.registerReceiver()}.)

下面是几个常见的只能动态注册的广播:

1、当设备没有进行交互,屏幕关闭发送的广播:

public static final String ACTION_SCREEN_OFF = "android.intent.action.SCREEN_OFF";

Android官方文档如下定义:

    /**     * Broadcast Action: Sent when the device goes to sleep and becomes non-interactive.     * 

* For historical reasons, the name of this broadcast action refers to the power * state of the screen but it is actually sent in response to changes in the * overall interactive state of the device. *

* This broadcast is sent when the device becomes non-interactive which may have * nothing to do with the screen turning off. To determine the * actual state of the screen, use {@link android.view.Display#getState}. *

* See {@link android.os.PowerManager#isInteractive} for details. *

* You cannot receive this through components declared in * manifests, only by explicitly registering for it with * {@link Context#registerReceiver(BroadcastReceiver, IntentFilter) * Context.registerReceiver()}. * *

class="note">This is a protected intent that can only be sent * by the system. */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_SCREEN_OFF = "android.intent.action.SCREEN_OFF";

2、当设备进行互动但屏幕打开可能什么也没做发送的广播:

public static final String ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON";

Android官方文档如下定义:

    /**     * Broadcast Action: Sent when the device wakes up and becomes interactive.     * 

* For historical reasons, the name of this broadcast action refers to the power * state of the screen but it is actually sent in response to changes in the * overall interactive state of the device. *

* This broadcast is sent when the device becomes interactive which may have * nothing to do with the screen turning on. To determine the * actual state of the screen, use {@link android.view.Display#getState}. *

* See {@link android.os.PowerManager#isInteractive} for details. *

* You cannot receive this through components declared in * manifests, only by explicitly registering for it with * {@link Context#registerReceiver(BroadcastReceiver, IntentFilter) * Context.registerReceiver()}. * *

class="note">This is a protected intent that can only be sent * by the system. */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON";

3、当前时间已经改变,每分钟发送一次的广播:

public static final String ACTION_TIME_TICK = "android.intent.action.TIME_TICK";

Android官方文档如下定义:

    /**     * Broadcast Action: The current time has changed.  Sent every     * minute.  You cannot receive this through components declared     * in manifests, only by explicitly registering for it with     * {@link Context#registerReceiver(BroadcastReceiver, IntentFilter)     * Context.registerReceiver()}.     *     * 

This is a protected intent that can only be sent * by the system. */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_TIME_TICK = "android.intent.action.TIME_TICK";

4、当前设备方向,区域设置等发生了变化。用户界面(视图层次)根据新的信息重建时发送的广播:

public static final String ACTION_TIME_TICK = "android.intent.action.TIME_TICK";

Android官方文档如下定义:

    /**     * Broadcast Action: The current device {@link android.content.res.Configuration}     * (orientation, locale, etc) has changed.  When such a change happens, the     * UIs (view hierarchy) will need to be rebuilt based on this new     * information; for the most part, applications don't need to worry about     * this, because the system will take care of stopping and restarting the     * application to make sure it sees the new changes.  Some system code that     * can not be restarted will need to watch for this action and handle it     * appropriately.     *     * 

class="note"> * You cannot receive this through components declared * in manifests, only by explicitly registering for it with * {@link Context#registerReceiver(BroadcastReceiver, IntentFilter) * Context.registerReceiver()}. * *

class="note">This is a protected intent that can only be sent * by the system. * * @see android.content.res.Configuration */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_CONFIGURATION_CHANGED = "android.intent.action.CONFIGURATION_CHANGED";

5、当电池电量发生改变是发送的广播:

 public static final String ACTION_BATTERY_CHANGED = "android.intent.action.BATTERY_CHANGED";

Android官方文档如下定义:

    /**     * Broadcast Action:  This is a sticky broadcast containing the     * charging state, level, and other information about the battery.     * See {@link android.os.BatteryManager} for documentation on the     * contents of the Intent.     *     * 

class="note"> * You cannot receive this through components declared * in manifests, only by explicitly registering for it with * {@link Context#registerReceiver(BroadcastReceiver, IntentFilter) * Context.registerReceiver()}. See {@link #ACTION_BATTERY_LOW}, * {@link #ACTION_BATTERY_OKAY}, {@link #ACTION_POWER_CONNECTED}, * and {@link #ACTION_POWER_DISCONNECTED} for distinct battery-related * broadcasts that are sent and can be received through manifest * receivers. * *

class="note">This is a protected intent that can only be sent * by the system. */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_BATTERY_CHANGED = "android.intent.action.BATTERY_CHANGED";

更多相关文章

  1. Android:SeekBar和RatingBar控件
  2. android aidl进程间通信
  3. Android(安卓)SurfaceFlinger学习文档
  4. android 分割线渐变色和几种颜色值定义
  5. android 自定义 radiobutton 文字颜色随选中状态而改变
  6. Android开发中如何定义和使用数组
  7. android 定义手势
  8. java.lang.IllegalStateException: You need to use a Theme.App
  9. android JNI之 'GetObjectClass' in something not a structure

随机推荐

  1. Android类参考---Manifest.permission_gr
  2. Android(安卓)CoordinatorLayout+AppBarL
  3. Android(安卓)onNewIntent的应用
  4. SwitchLayout安卓最佳切换动画
  5. Dagger2 菜鸟学习指南
  6. Context 传递数据
  7. 为Activity屏幕的标题添加图标
  8. Android(安卓)4.4 Kitkat Phone工作流程
  9. android asmack 注册 登陆 聊天 多人聊天
  10. Android(安卓)FineCache NOSQL数据库