如何在不使用静态变量中使用硬编码值的情况下初始化Android C2DM的发件人ID?
作者:互联网
我正在将Android C2DM添加到Android库项目中.我从JumpNote和Chrome To Phone附带的com.google.android.c2dm package开始.为了使用此程序包,必须子类化C2DMBaseReceiver服务,该服务将Sender Id作为其构造函数的参数.在JumpNote中,此参数是使用config类中的硬编码静态变量初始化的.但是,在一个可能由多个同时运行的应用程序使用的Android库项目中,我认为我不能使用硬编码的静态变量(也就是说,我相信当/如果多个应用程序试图访问/修改静态变量).
我尝试过一种无需使用静态变量即可初始化发件人ID的方法,到目前为止,它已陷入困境.
显而易见的解决方案是使用清单或资源字符串或两者的组合.例如,在strings.xml中,我可能有一个“ ac2dmSender”字符串,可以在C2DMReceiver服务声明的元数据子元素中访问该字符串.在清单中.但是,似乎您无法从静态上下文中获取对PackageManager或ResourceManager的引用,因此,我无法以这种方式检索元数据并将其传递给C2DMBaseReceiver的构造函数.
请让我知道我缺少什么!提前致谢.
解决方法:
我们有同样的问题.
我们通过使用资产文件夹下的属性文件解决了该问题.
可以通过使用静态配置帮助程序类来静态加载属性.
第一次加载应用程序时,可以使用Application上下文获取属性文件.
例如:
1.初始化静态配置
公共无效onCreate(捆绑保存的InstanceState){
super.onCreate(savedInstanceState);
myConfig =新的WLConfig(getApplication());
}
>然后在配置类中使用:
myProperties.load(context.getAssets().open(“ myclient.properties”));
>并获取发件人电子邮件:
返回myProperties.getProperty(WL_C2DM_SENDER)
标签:push,android-c2dm,android 来源: https://codeday.me/bug/20191105/1997336.html