我正在尝试开发一个显示电池温度的小部件。当我使用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);
答案 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);