gpt4 book ai didi

android - 如何注册具有权限的动态BroadcastReceiver?

转载 作者:太空狗 更新时间:2023-10-29 15:02:11 24 4
gpt4 key购买 nike

我正在尝试在我的服务中设置一个动态广播接收器来接收来自另一个应用程序的广播。问题是我想要求广播公司拥有特定权限。

在服务应用程序的 AndroidManifest 文件中,我使用普通保护级别创建了权限。将要广播的应用程序正在使用上述权限。广播发送如下:

Intent intent = new Intent();
intent.setAction(Utils.ACTION_SEND_BUS_MESSAGE);
intent.putExtra(BusMessage.class.getSimpleName(), msg);
sendBroadcast(intent, Utils.PERMISSION_SEND_MESSAGE);

并且在服务接收器中注册为:

registerReceiver(receiver, receiver.getIntentFilter(), Utils.PERMISSION_SEND_MESSAGE, null);

不幸的是广播没有到达接收者。从 sendBroadcast 和 registerReceiver 中删除许可确实允许接收广播。

我还测试了 broadcaster 以确保授予了所需的权限,这是事实。

最佳答案

有很多方法。检查 ContextWrapper 类。添加一些示例。

 @Override
public Intent registerReceiver(
BroadcastReceiver receiver, IntentFilter filter, int flags) {
return mBase.registerReceiver(receiver, filter, flags);
}

@Override
public Intent registerReceiver(
BroadcastReceiver receiver, IntentFilter filter,
String broadcastPermission, Handler scheduler) {
return mBase.registerReceiver(receiver, filter, broadcastPermission,
scheduler);
}

@Override
public Intent registerReceiver(
BroadcastReceiver receiver, IntentFilter filter,
String broadcastPermission, Handler scheduler, int flags) {
return mBase.registerReceiver(receiver, filter, broadcastPermission,
scheduler, flags);
}

/** @hide */
@Override
@UnsupportedAppUsage
public Intent registerReceiverAsUser(
BroadcastReceiver receiver, UserHandle user, IntentFilter filter,
String broadcastPermission, Handler scheduler) {
return mBase.registerReceiverAsUser(receiver, user, filter, broadcastPermission,
scheduler);
}

关于android - 如何注册具有权限的动态BroadcastReceiver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25575422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com