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.

¿Fue útil?

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"
         }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top