Waza_Be Waza_Be - 1 month ago 20
Android Question

MapActivity: set APIKey programmatically

I currently use a MapActivity in my application.
I use it with 2 API Keys. One for debugging, and one for "production"

I am fed up with changing these values in the xml layout:

<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" />


I am fed up trying to change the apikey each time and replace prod by debug each time.

Is that possible to change this key within the onCreate() of my application.

Imagine that I have a boolean preference that look like: isDebug.

I may check thi preference on my phone and disable it by default on user application. and make something like:

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


Thank a lot for any help.

Answer

This works for me.

This variant of MapView constructor is documented here: https://developers.google.com/maps/documentation/android/reference/com/google/android/maps/MapView

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
    String mapApiKey = <your choice logic here>
    mMapView = new MapView(this, mapApiKey);
    setContentView(mMapView);