为什么我可以通过清单文件为“android.intent.action.ACTION_POWER_CONNECTED”注册广播接收器,但不能使用以下方式以编程方式注册:
IntentFilter iFilter = new IntentFilter();
iFilter.addAction("android.intent.action.ACTION_POWER_CONNECTED");
registerReceiver(powerStateListener, iFilter);
确定必须通过清单注册哪些意图以及哪些意图可以通过编程方式完成的最佳方法是什么?
答案 0 :(得分:3)
不幸的是,这里的文档有点迟钝。 它实际上只记录在ACTION_BATTERY_CHANGED:
您无法通过清单中声明的组件收到此信息, 只能通过Context.registerReceiver()显式注册它。 参见ACTION_BATTERY_LOW,ACTION_BATTERY_OKAY,ACTION_POWER_CONNECTED, 和ACTION_POWER_DISCONNECTED用于不同的电池相关广播 已发送,可通过清单接收器
接收
因此,据我理解文档,ACTION_BATTERY_CHANGED只能由注册的接收者接收,ACTION_POWER_CONNECTED只能由清单中指定的接收者接收。