MapActivity: set APIKey programmatically

前端 未结 4 623
礼貌的吻别
礼貌的吻别 2020-12-16 11:54

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 th

相关标签:
4条回答
  • 2020-12-16 12:00

    You should use Product Flavors.

    For example:

    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"
             }
        }
    }
    
    0 讨论(0)
  • 2020-12-16 12:03

    You cannot both have the widget in your layout and set the API key in Java.

    If you dynamically create the MapView via its constructor, you can supply the API key that way from Java code, but then you will need to dynamically add it to your layout.

    That being said, I'd deal with the problem via your build process (e.g., based on debug/production build, copy the right XML file into the right directory).

    0 讨论(0)
  • 2020-12-16 12:07

    You have to create google maps object dynamically. Your layout will contaion only parent layout for creating object.

    0 讨论(0)
  • 2020-12-16 12:13

    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);
    
    0 讨论(0)
提交回复
热议问题