System.err: java.lang.SecurityException: Permission Denial: not allowed to send broadcast XXX

时间:2024-04-03 09:40:03

解决Permission Denial

System.err: java.lang.SecurityException: Permission Denial: not allowed to send broadcast XXX

原因

android.intent.action.TIME_SET(XXX),是只能由系统发送的特殊广播(这类广播可以在源码的frameworks/base/core/res/AndroidManifest.xml中查看),而触发发送该广播的应用不是系统进程.
System.err: java.lang.SecurityException: Permission Denial: not allowed to send broadcast XXX

解决办法

1.在触发发送该广播的应用的AndroidManifest.xml中,节点manifest中加入"android:sharedUserId=“android.uid.system”
System.err: java.lang.SecurityException: Permission Denial: not allowed to send broadcast XXX
2.在编译该应用的mk文件中加入LOCAL_CERTIFICATE := platform这一行

android:sharedUserId="android.uid.system的意思是,利用sharedUserId,将拥有同一个user id的apk运行在同一个进程中,android.uid.system的意思就是让程序运行在系统的进程中.但此时还不能安装apk,程序想要运行在系统进程中还要有目标系统的系统签名,所以还需要LOCAL_CERTIFICATE := platform让这个apk拥有系统签名.