LocalBroadcastManager是否依赖于应用程序包名称?

时间:2013-09-26 11:33:18

标签: android android-gradle localbroadcastmanager

我正在使用新的Android构建系统创建应用,并使用LocalBroadcastManagerIntentService的通知重新发送回Activity

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

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

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

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

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

我还需要设置其他内容吗?

2 个答案:

答案 0 :(得分:1)

如果您查看source code of LocalBroadcastManager,您会看到如果您将Intent标记为Intent.FLAG_DEBUG_LOG_RESOLUTION(使用Intent.addFlags(int)),则会在logcat中打印出来非常有用的信息:您可能想要尝试使用和不使用风味,并比较结果,看看出了什么问题。

答案 1 :(得分:0)

我在同一个项目中有org.cmpny.apporg.cmpny.app.additional个名称空间; LocalBroadcastManager工作正常,在AndroidManifest 中无需调整任何东西(除了LocalBroadcastManager不能与“:remote”服务一起使用,但这是另一点)