欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

2020-07-27ERROR: Sending non-protected broadcast

最编程 2024-07-19 18:58:47
...

在调试程序发送广播的时候发生如下bug。导致发送的广播失败。


1595821960(1).png

先来看下log:

2020-07-27 11:54:44.270 425-1569/? E/ActivityManager: Sending non-protected broadcast com.makeblock.discovery.mainservice.robot.set from system 2101:cn.com.mdj.robot/1000 pkg cn.com.mdj.robot
    java.lang.Throwable
        at com.android.server.am.ActivityManagerService.checkBroadcastFromSystem(ActivityManagerService.java:19134)
        at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:19646)
        at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:19881)
        at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:240)
        at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2922)
        at android.os.Binder.execTransact(Binder.java:697)
2020-07-27 11:54:44.279 425-1569/? E/ActivityManager: Sending non-protected broadcast com.makeblock.discovery.mainservice.robot.set from system 2101:cn.com.mdj.robot/1000 pkg cn.com.mdj.robot
    java.lang.Throwable
        at com.android.server.am.ActivityManagerService.checkBroadcastFromSystem(ActivityManagerService.java:19134)
        at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:19739)
        at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:19881)
        at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:240)
        at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2922)
        at android.os.Binder.execTransact(Binder.java:697)

这是我在一次开发中出现的,系统中需要发送一个应用自定义的广播,send 之后会报出Sending non-protected broadcast 的异常。

借此机会来解析protected broadcast 的使用,我们在 Android 中broadcast 发送过程解析 中了解了broadcast 发送的整个过程,通过Context 的接口最终会调用到AMS 中broadcastIntent()。

原因:
系统对自定义广播做了保护限制,对广播做了保护限定之后,只有一定权限的用户才可以使用。否则用一次就会打印一次warning,并且保存异常信息到文件中。

解决办法:

<protected-broadcast
        android:name="com.makeblock.discovery.mainservice.robot.set" />
1595836676(1).png