【问题标题】:Android how to set Google Map Api Key dynamically not from AndroidManifestAndroid如何动态设置Google Map Api Key而不是来自AndroidManifest
【发布时间】:2015-08-27 08:03:23
【问题描述】:

我需要动态设置 google map Api 键,即形成代码而不是清单。目前我正在从 string.xml 获取这个值。根据要求,这不是首选方式。

<meta-data`android:name="com.google.android.maps.v2.API_KEY"`

   android:value="@string/map_api_key"
                         />

如何设置此值形式代码。

【问题讨论】:

    标签: android metadata android-manifest


    【解决方案1】:

    你会这样做的方式是作为一个清单占位符。

    在你的 AndroidManifest.xml 中放一个这样的变量声明:

        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="${mapsApiKey}"/>
    

    然后在你的 build.grade 中输入:

    android {
        defaultConfig {
            manifestPlaceholders = [ mapsApiKey:"debugKey"]
        }
            buildTypes {
                release {
                    manifestPlaceholders = [ mapsApiKey:"prodKey" ]
                }
            }
       }
    

    文档在这里:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Placeholder-support

    请注意,我在这里对您的用例做出假设。这仅适用于您尝试根据构建类型换出密钥的情况。

    【讨论】:

      【解决方案2】:

      你可以这样做:

      mMapView = new MapView(this, mapApiKey);
      

      但是你不能既在你的 xml 布局中拥有小部件,又在 Java 中设置 API 密钥。在这种情况下,您需要将地图动态添加到您的布局中。

      编辑:从 api v2 开始,这是不可能的,您必须在清单文件中设置 api 密钥。

      【讨论】:

      • mapApiKey 是一个字符串。没有 MapView(Context ,String) 的构造函数。
      • 自 api v2 以来似乎已禁用此功能。 Google 在其文档中说:要使用 Maps API V2 访问 Google Maps 服务器,您必须向您的应用程序添加 Maps API 密钥......通过向应用程序的 AndroidManifest.xml 文件添加一个元素来将密钥添加到您的应用程序.
      • 好伤心。我需要以某种方式克服的限制。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多