美文网首页
Android 8.0(api27)静态广播和动态广播接收问题

Android 8.0(api27)静态广播和动态广播接收问题

作者: 12e247aaefbd | 来源:发表于2020-06-03 00:46 被阅读0次

Android 8.0对广播进行了限制:静态广播(应用内)需要为Intent设置setClassName(String),动态广播需要为IntentFilter设置addAction(String)同时还要为Intent设置setAction(String),并且这两个字符内容必须一样。

附代码

1.静态广播(应用内):必须设置setClassName(context, "包+类名")

//广播接收者--MyBroadcastReceiver.java
package com.example.administrator.testmvp.broadcast_receiver;

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, intent.getAction(), Toast.LENGTH_SHORT).show();
    }
}

//注册静态广播--AndroidManifest.xml
<receiver android:name=".broadcast_receiver.MyBroadcastReceiver"
    android:permission="true">
      <intent-filter>
         <action android:name="myBroadcastReceiver" />
      </intent-filter>
</receiver>

// 发送静态广播-MainActivity
Intent intent = new Intent();
intent.setAction("myBroadcastReceiver");
String className = getPackageName() + ".broadcast_receiver.MyBroadcastReceiver";
intent.setClassName(MainActivity.this, className);
sendBroadcast(intent);



2.动态广播:intentFilter.addAction(String)和intent.setAction(String)字符内容必须一样


//广播接收者
package com.example.administrator.testmvp.broadcast_receiver;

public class DynamicBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, intent.getAction(), Toast.LENGTH_SHORT).show();
    }
}

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.broadcasttest.MY_BROADCAST");
// 注册动态广播
registerReceiver(new DynamicBroadcastReceiver(), intentFilter);
// 发送动态广播
Intent intent = new Intent();
intent.setAction("com.example.broadcasttest.MY_BROADCAST");
sendBroadcast(intent);

相关文章

  • Android 8.0(api27)静态广播和动态广播接收问题

    Android 8.0对广播进行了限制:静态广播(应用内)需要为Intent设置setClassName(Stri...

  • 第一行代码 -- 笔记2

    五、广播机制 1.接收系统广播 动态注册监听时间变化 静态注册实现开机启动 在 Android 8.0 系统之后,...

  • Android 发送接收广播原理

    前言 本文代码基于 Android R。 注册广播接收者 Android 可以动态和静态注册广播接收者。动态广播接...

  • Android8.0,9.0 Broadcast监听APK安装和

    问题原因: Android 8.0和9.0在AndroidManifest.xml文件中静态注册广播接收失效是由于...

  • BroadcastReceiver

    Android 8.0 之后静态注册广播接收不到自定义广播:解决方法:指定Component.

  • Android高版本静态广播

    学习第一行代码时,编写书中demo时,发现静态广播无法接收,百度和谷歌后发现,android8.0后对于静态广播的...

  • 广播相关学习-registerReceiver

    广播主要分为两部分:广播发送者和广播接收者 广播接收者:分为静态注册和动态注册 静态注册:AndroidManif...

  • 入门第五天

    广播接收器 分为动态广播器和静态广播器,静态广播器只能接受显式广播 广播 分为标准广播和有序广播,标准广播使得所有...

  • Android 和PC的adb 通讯

    Android 8.0及以后,不能监听隐式的系统广播,就动态的注册广播, 或者 如果一定要Manifest静态注册...

  • 富立叶F760 PDA

    要注意 android8.0 及以上不允许静态注册广播,只能代码动态注册。

网友评论

      本文标题:Android 8.0(api27)静态广播和动态广播接收问题

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