在定制化开发 Android 系统时如果想增加广播,但是在发送时 Log 中总能发现:
01-01 00:50:02.210 933 1193 E ActivityManager: Sending non-protected broadcast ******* from system 1476:*******/1000 pkg *******
01-01 00:50:02.210 933 1193 E ActivityManager: java.lang.Throwable
01-01 00:50:02.210 933 1193 E ActivityManager: at com.android.server.am.ActivityManagerService.checkBroadcastFromSystem(ActivityManagerService.java:21252)
01-01 00:50:02.210 933 1193 E ActivityManager: at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:21856)
01-01 00:50:02.210 933 1193 E ActivityManager: at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:21998)
01-01 00:50:02.210 933 1193 E ActivityManager: at android.app.IActivityManager$Stub.onTransact$broadcastIntent$(IActivityManager.java:10171)
01-01 00:50:02.210 933 1193 E ActivityManager: at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:167)
01-01 00:50:02.210 933 1193 E ActivityManager: at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3292)
01-01 00:50:02.210 933 1193 E ActivityManager: at android.os.Binder.execTransact(Binder.java:731)
虽然系统能正常运行,但是这让一些人看上去不舒服,或者在分析 bug 时,别人会以为是 Error
为了规范,这种问题还是需要修复的
修复的办法:
在 /frameworks/base/core/res/AndroidManifest.xml 文件中
<!-- For IdleController -->
<protected-broadcast android:name="android.intent.action.DOCK_IDLE" />
<protected-broadcast android:name="android.intent.action.DOCK_ACTIVE" />
这类代码下加入自己的 broadcast 如:
<protected-broadcast android:name="***.intent.action.***" />
版权声明:本文为weixin_30774063原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。