我已经看过提到registerReceiver
必须调用(未在清单中定义)才能接收ACTION_BATTERY_LOW
意图的帖子。
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
//....
registerReceiver(new BatteryLevelReceiver(), new IntentFilter(
Intent.ACTION_BATTERY_LOW));
}
// .......
}
广播接收器
public class BatteryLevelReceiver extends BroadcastReceiver
{
private static final String TAG = BatteryLevelReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent)
{
Log.d(TAG, "onReceive");
}
}
我在 logcat 中没有看到“onReceive”日志语句。我正在使用模拟器来模拟电池电量不足的状态,使用telnet 5554
和执行power capacity 10
. 我确实看到模拟器中的电池状态发生了变化,但没有触发意图。
另外,如果我必须registerReceiver()
在活动中调用并且我不调用unregisterReceiver
or onStop
,onDestroy
可以吗?如果不行,即使我的应用不在前台,我将如何注册接收器以接收系统意图?(除了使用清单)。