检查android上是否连接了电源

时间:2012-10-28 15:49:54

标签: android broadcastreceiver

我正在开发一个Android项目,我正在一个类中注册广播接收器,该类扩展了接收ACTION_POWER_CONNECTEDACTION_POWER_DISCONNECTEDACTION_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;
}

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

您无法在现有的BroadcastReceiver中注册新的BroadcastReceiver。