本地广播管理器是否依赖于应用包名称



我正在使用新的Android构建系统创建一个应用程序,并使用LocalBroadcastManager将通知从IntentService触发回Activity

我已将以下产品风格定义为 3 个独立应用构建的一部分;

productFlavours {
    london {
        packageName 'com.example.lo'
    }
    dubai {
        packageName 'com.example.du'
    }
}

当我使用这些产品风格中的任何一种构建应用程序时,我不会通过管理器获得任何广播。我已确认服务和活动在同一进程中运行。

广播接收器在我的活动的Activity#onCreate方法中按要求绑定,但不接收任何事件。我还通过打印出活动和服务的进程 ID 来确认,并且两者都报告这是同一个进程,所以这不是问题。

作为测试,我删除了产品风格,并仅使用应用程序清单文件中定义的单个包名称构建了应用程序,现在广播管理器似乎按预期运行。在我发送的意图上,我只是设置操作。

我需要设置其他内容吗?

如果你查看LocalBroadcastManager的源代码,你会发现如果你给你的Intent标志Intent.FLAG_DEBUG_LOG_RESOLUTION(通过使用Intent.addFlags(int)(,它会在logcat中打印非常有用的信息:你可能想尝试有和没有口味,并比较结果看看出了什么问题。

我在同一项目中有org.cmpny.apporg.cmpny.app.additional命名空间;LocalBroadcastManager工作正常,不需要在AndroidManifest中进行调整(除了LocalBroadcastManager不能与":remote"服务一起使用,但这是另一点(

最新更新