我正在开发一个Android项目,我正在一个类中注册广播接收器,该类扩展了接收ACTION_POWER_CONNECTED
,ACTION_POWER_DISCONNECTED
和ACTION_SCREEN_OFF
的意图的BroadcastReceiver。
当接收到这些不同的意图时,它会调用另一个扩展Service
的类中的函数。
当它收到ACTION_POWER_CONNECTED
时,它还会调用一个名为isPowerConnected
的函数来检查电源是否已连接,如果不是,则启用WakeLock。
我遇到的问题是,当我执行isPowerConnected
函数时,它似乎第一次工作,但随后每次都会收到:
android.content.ReceiverCallNotAllowedException:IntentReceiver 组件不允许注册接收意图。
我不知道如何解决这个问题。以下是isPowerConnected的代码。
public boolean isPowerConnected()
{
int pluggedIn = -1;
try
{
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
pluggedIn = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
}
catch (Exception ex)
{
Log.e("IsPowerConnected", ex.toString());
}
return pluggedIn == BatteryManager.BATTERY_PLUGGED_AC || pluggedIn == BatteryManager.BATTERY_PLUGGED_USB;
}
感谢您提供的任何帮助。
答案 0 :(得分:0)
您无法在现有的BroadcastReceiver中注册新的BroadcastReceiver。