Android "Receiving a broadcast in package xxx requires a permissions review"
Android "Receiving a broadcast in package xxx requires a permissions review"
我有两个应用程序,一个将发送带有 自定义操作的广播 "com.google.android.exoplayer2.demo.action.INFORM_TIME",另一个应用程序带有在 JUnit @Before class.
中注册的广播接收器
此接收器在 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 Pie设备上,android.permission.WRITE_EXTERNAL_STORAGE
权限正常,我可以安全地直接写入文件夹/sdcard/
。但是在 android Q 上,这将不再有效。
所以这个写入文件失败以某种方式使我的广播接收器无法接收任何广播。难以置信的!!!
但就是这样,在我更新了用于保存文件的文件夹并删除了清单中的权限 android.permission.WRITE_EXTERNAL_STORAGE
之后,广播接收器现在可以正常工作了 android Q.
我有两个应用程序,一个将发送带有 自定义操作的广播 "com.google.android.exoplayer2.demo.action.INFORM_TIME",另一个应用程序带有在 JUnit @Before class.
中注册的广播接收器
此接收器在 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 Pie设备上,android.permission.WRITE_EXTERNAL_STORAGE
权限正常,我可以安全地直接写入文件夹/sdcard/
。但是在 android Q 上,这将不再有效。
所以这个写入文件失败以某种方式使我的广播接收器无法接收任何广播。难以置信的!!!
但就是这样,在我更新了用于保存文件的文件夹并删除了清单中的权限 android.permission.WRITE_EXTERNAL_STORAGE
之后,广播接收器现在可以正常工作了 android Q.