美文网首页
Android8自定义广播无法收到消息

Android8自定义广播无法收到消息

作者: fomin | 来源:发表于2018-11-01 18:12 被阅读18次

在Android 8之前,如果要发送自定义的静态广播,做好其他配置后,只需实例化一个Intent对象intent,然后将其作为参数传入sendBroadcast()方法中即可,例如

Intent intent = new Intent(action);
intent.putExtra(INTENT_DATA_PUSH, data);
intent.addCategory(context.getPackageName());
context.sendBroadcast(intent);

但在Android 8之后需要setComponent才能收到广播消息,其中,ComponentName接收两个参数,参数1是自定义广播的包名,参数2是自定义广播的路径。

Intent intent = new Intent(action);
intent.putExtra(INTENT_DATA_PUSH, data);
intent.addCategory(context.getPackageName());
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
    intent.setComponent(new ComponentName(context.getPackageName(), com.test.broadcastReceiver);
}
context.sendBroadcast(intent);

因为在Android 8.0 及以上 在xml中注册的广播,在接收的时候收到了额外的限制,如果你的app目标等级是26及以上,将无法接收到xml注册的广播,这是google 为了app注册的静态广播导致耗电加的限制,具体请查看【https://developer.android.com/guide/components/broadcasts.html

相关文章

  • Android8自定义广播无法收到消息

    在Android 8之前,如果要发送自定义的静态广播,做好其他配置后,只需实例化一个Intent对象intent,...

  • 无法收到开机广播

    国内第三方厂商对自启动做了一些限制,比如小米要在安全中心-->授权管理--自启动管理里添加三星要在智能管理器里面添...

  • 广播机制

    标准广播是一种异步广播,几乎所有注册监听这类广播的广播接收器都可以同时收到广播消息,效率比较高,无法截断。 有序广...

  • Android本地广播详解

    本地广播用途 本地广播用于同一个app内通信(是否可以多进程通信?),且其他app无法接收到本地广播的消息,可以大...

  • 发送自定义广播

    发送自定义广播 广播分类:标准广播、有序广播标准广播:所有程序都可以同时接收到(完全异步执行) 有序广播:优先级高...

  • android8-android10静态广播收到到

    android8开始发送给静态广播需要明确设置ComponentName 参数 参考文献 Android8.0,9...

  • iOS融云接收广播消息

    使用融云SDK的时候可能无法避免的用到广播的功能,我们怎么才能接收到广播过来的数据呢 1、实现融云接收消息的回调方...

  • Android静态广播多action冲突

    最近有个需求,开机自启,应用安装后自启,需要监听广播 问题:应用可以收到app覆盖的广播,无法收到开机广播修改: ...

  • 广播接收器(BroadcastReceiver)

    现实中的广播:电台为了传达一些消息而发送广播,通过广播携带要传达的消息,群众只要买一个收音机,就可以收到广播了。 ...

  • Android详解广播

    广播分两类: ▲标准广播:完全异步执行的广播!!!几乎所有的广播接收器都会同时接收到这条广播消息,没有先后顺序可言...

网友评论

      本文标题:Android8自定义广播无法收到消息

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