0

我正在开发一个 android 项目,在该项目中我在一个扩展 BroadcastReceiver 的类中注册一个广播接收器,该类接收ACTION_POWER_CONNECTEDACTION_POWER_DISCONNECTED的意图ACTION_SCREEN_OFF

当收到这些不同的意图时,它会调用另一个扩展类中的函数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;
}

感谢您的任何帮助,您可以提供。

4

1 回答 1

0

您不能在现有的 BroadcastReceiver 中注册新的 BroadcastReceiver,而实际上您正在这样做。

于 2012-10-28T15:53:52.623 回答