MapActivity: Conjunto apikey mediante programación
-
29-09-2019 - |
Pregunta
Actualmente utilizan un MapActivity en mi solicitud. Yo lo uso con 2 llaves API. Uno para la depuración, y uno para la "producción"
Estoy harto de cambiar estos valores en el diseño xml:
<view class="com.google.android.maps.MapView"
android:id="@+id/myGmap"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="@string/api_key_prod" />
Estoy harto de tratar de cambiar el apikey cada vez y reemplazar prod by depurar cada vez.
Es posible que para cambiar esta clave dentro del onCreate () de mi solicitud.
Imagínese que tengo una preferencia booleano que se parecen a:. IsDebug
Me puede comprobar Thi preferencia en mi teléfono y desactivarlo de forma predeterminada en la aplicación del usuario. y hacer algo como:
if (isDebug)
myMap.setApiKey(R.string.api_key_debug)
else
myMap.setApiKey(R.string.api_key_prod)
Gracias mucho por cualquier ayuda.
Solución
Esto funciona para mí.
Esta variante de MapView constructor se documenta aquí: https://developers.google.com/maps / documentación / android / referencia / com / google / android / mapas / MapView
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
String mapApiKey = <your choice logic here>
mMapView = new MapView(this, mapApiKey);
setContentView(mMapView);
Otros consejos
No se puede tener tanto el widget en su disposición y establecer la clave de API en Java.
Si dinámicamente crear el MapView
a través de su constructor, puede proporcionar la clave de API de esa manera a partir de código Java, pero entonces tendrá que añadir dinámicamente a su disposición.
Una vez dicho esto, me gustaría tratar el problema a través de su proceso de construcción (por ejemplo, sobre la base de depuración / build producción, copiar el archivo XML a la derecha en el directorio correcto).
Hay que crear los mapas de Google objeto dinámicamente. Su diseño contendrá diseño único padre para la creación de objetos.
Debe utilizar Sabores de productos .
Por ejemplo:
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"
}
}
}