SecurityException:Permission Denial:不允许发送广播android.intent.action.BATTERY_CHANGED

时间:2015-08-05 12:50:27

标签: android android-intent broadcastreceiver android-broadcast

我正在尝试开发一个显示电池温度的小部件。当我使用android.intent.action.BATTERY_CHANGED

注册广播接收器时

它显示了这样的错误。

java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.BATTERY_CHANGED from pid=-1, uid=10058

据我所知,不需要广播许可。如果是活动的话。它运作正常。

    Intent intent = new Intent();
    intent.setAction("android.intent.action.BATTERY");
    return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

1 个答案:

答案 0 :(得分:1)

  

据我所知,不需要广播许可

是的,有。您正在发送广播。并引用the documentation for ACTION_BATTERY_CHANGED

  

这是受保护的意图,只能由系统发送。

你不是系统;你不能发这个广播。

我不知道您为什么要创建一个试图发送此广播的PendingIntent,但您需要做其他事情。如果您的目标是通过点击应用小部件触发BroadcastReceiver,那个接收者正好听取ACTION_BATTERY_CHANGED,那么只需使用明确的Intent在创建PendingIntent时识别接收者:

PendingIntent.getBroadcast(context, 0, new Intent(this, YourReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);