【问题标题】:Android "Receiving a broadcast in package xxx requires a permissions review"Android“在xxx包中接收广播需要权限审查”
【发布时间】:2019-08-05 16:26:37
【问题描述】:

我有两个应用程序,一个将发送带有自定义操作“com.google.android.exoplayer2.demo.action.INFORM_TIME”的广播,另一个应用程序使用在 JUnit @Before 类中注册的广播接收器。
这个接收器在 android Pie 上运行良好,但在 android Q 上不运行。 从 logcat 中,它说“在包 xxx 中接收广播需要权限审查”。 “xxx”代表 JUnit 测试包。

  • Android Pie 广播接收器工作正常,android Q JUnit 测试不行。
  • Android Q 应用程序(带有可见 UI)广播接收器工作正常,android Q JUnit 测试广播接收器无法工作。
  • 使用adb install -g xxx在andorid Q上安装两个JUnit测试应用,广播接收器工作正常。没有-g,将无法正常工作。所以这似乎是一个权限问题。

应用 A 发送广播:

Intent informIntent = new Intent();   informIntent.setAction("com.google.android.exoplayer2.demo.action.INFORM_TIME");
informIntent.putExtra("Time", time);
sendBroadcast(informIntent);

应用 B 接收广播:

receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                if (action != null && action.equals(ACTION_INFORM_TIME)) {
                    Long currentTime = intent.getLongExtra("Time", -1);
                    Log.d(LOG_TAG, "BroadcastReceiver: Receives current Exoplayer playback time '" + currentTime + "'.");
                    time = currentTime;
                }
            }
        };
IntentFilter filter = new IntentFilter();
filter.addAction("com.google.android.exoplayer2.demo.action.INFORM_TIME");
mContext.registerReceiver(receiver, filter);

我不太确定 android Pie 和 android Q 之间的广播接收器、具有用户可见 UI 的应用程序和 JUnit 测试之间有什么区别。
问题是,我们需要获得什么权限带有自定义操作的广播。
需要帮助,任何评论将不胜感激!

【问题讨论】:

    标签: android broadcastreceiver android-testing


    【解决方案1】:

    找到原因,在android Pie设备上,android.permission.WRITE_EXTERNAL_STORAGE权限运行良好,我可以安全地直接写入文件夹/sdcard/。但是在android Q上,这将不再起作用。

    所以这个写入文件失败以某种方式使我的广播接收器无法接收任何广播。难以置信的!!!

    就是这样,在我更新用于保存文件的文件夹并删除清单中的android.permission.WRITE_EXTERNAL_STORAGE 权限后,广播接收器现在可以正常工作了 android Q。

    【讨论】:

    • 喜欢同样的问题,缺少声明权限“android.permission.WRITE_EXTERNAL_STORAGE”也导致BroadcastReceiver不工作,logcat显示Receiving a broadcast in package xxx requires a permissions review。手动声明并授予权限后,BroadcastReceiver 运行良好。
    猜你喜欢
    • 2011-05-11
    • 1970-01-01
    • 2016-03-24
    • 2021-07-14
    • 2017-12-22
    • 1970-01-01
    • 2019-08-20
    • 2019-10-24
    • 2018-01-20
    相关资源
    最近更新 更多