【发布时间】:2021-07-10 11:32:08
【问题描述】:
我在哪里可以找到Intent/Broadcast 可以粘贴的信息?
通过操作系统发送的粘性广播的示例是ACTION_BATTERY_CHANGED。当我使用 null BroadcastReceiver 为该操作调用 registerReceiver() 时,我得到了该操作的最后一次广播的 Intent。
每当我通过以下方式找到最后一个值时:
//In Activity
val batteryIntent = registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED)); //sticky
val level = batteryIntent?.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
val scale = batteryIntent?.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
这个 Intent:AudioManager.ACTION_HEADSET_PLUG 也有效,但有些 Intent 不起作用:LocationManager.MODE_CHANGED_ACTION, Intent.ACTION_POWER_CONNECTED BluetoothDevice.ACTION_ACL_CONNECTED, ... 我知道,有些没有意义,但这些 Intent 的结果是总是null,就算有变化,为什么?
对于ACTION_BATTERY_CHANGED,文档中有信息:“这是一个粘性广播......”,但对于ACTION_HEADSET_PLUG,没有。
是否存在任何限制或拆分为粘性/非粘性或列出哪些 Intent 具有粘性?
为什么有些 Intent 有效而有些无效?
谢谢。
【问题讨论】:
标签: android android-intent broadcastreceiver android-broadcast