【发布时间】: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