美文网首页
2020-07-27ERROR: Sending non-pro

2020-07-27ERROR: Sending non-pro

作者: fjasmin | 来源:发表于2020-07-27 14:10 被阅读0次

    在调试程序发送广播的时候发生如下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

    相关文章

      网友评论

          本文标题:2020-07-27ERROR: Sending non-pro

          本文链接:https://www.haomeiwen.com/subject/bgczlktx.html