MapActivity:以编程方式设置APIKey

我目前在我的应用程序中使用MapActivity。 我使用2个API密钥。 一个用于调试,一个用于“生产”

我厌倦了在xml布局中更改这些值:

 

我厌倦了每次尝试更改apikey并且每次都通过调试替换prod。

是否可以在我的应用程序的onCreate()中更改此

想象一下,我有一个布尔首选项,如:isDebug。

我可以检查我的手机上的首选项,并默认在用户应用程序上禁用它。 做一些像:

  if (isDebug) myMap.setApiKey(R.string.api_key_debug) else myMap.setApiKey(R.string.api_key_prod) 

非常感谢任何帮助。

Solutions Collecting From Web of "MapActivity:以编程方式设置APIKey"

这对我有用。

此处记录了此MapView构造函数的变体: https : //developers.google.com/maps/documentation/android/reference/com/google/android/maps/MapView

 @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); String mapApiKey =  mMapView = new MapView(this, mapApiKey); setContentView(mMapView); 

您既不能在布局中使用窗口小部件,也不能在Java中设置API密钥。

如果通过其构造函数动态创建MapView ,则可以从Java代码中提供API密钥,但是您需要将其动态添加到布局中。

话虽这么说,我会通过你的构建过程处理这个问题(例如,基于调试/生产构建,将正确的XML文件复制到正确的目录中)。

您必须动态创建谷歌地图对象。 您的布局将仅包含用于创建对象的父布局。

您应该使用产品口味

例如:

 android { ... defaultConfig { minSdkVersion 8 versionCode 10 } productFlavors { dev { resValue "string", "google_maps_api_key", "DEV_API_KEY" } prod { resValue "string", "google_maps_api_key", "PROD_API_KEY" } } }