【问题标题】:Is it possible to set the Android Maps API v2 key programmatically?是否可以以编程方式设置 Android Maps API v2 密钥?
【发布时间】:2013-07-11 21:26:24
【问题描述】:

是否可以通过编程方式设置 API v2 密钥,而不是在 AndroidManifest 文件中设置此值?

我可以使用 API v1 密钥执行此操作,但我无法在 MapView 中找到使用当前 API 执行此操作的方法构造函数。

【问题讨论】:

  • 为什么要动态设置?
  • 这是一个奇怪的要求,因为他们(客户)想自己签名和设置 API 密钥。我只提供了一个未签名的 apk。

标签: android android-maps-v2


【解决方案1】:

AFAIK 这在 Google API V2 中是不可能的。文档建议同样的事情,必须使用 Manifest 文件分配 API 密钥:

https://developers.google.com/maps/documentation/android/start#adding_the_api_key_to_your_application

【讨论】:

    【解决方案2】:

    可以直接在 APK 文件中更改 Maps API v2 密钥。

    只需编写一个脚本:解压缩 APK,编辑二进制 AndroidManifest 以用给定的密钥替换预定义的值(例如 XXXXXXX...),然后将其压缩回 .apk。

    之后,您就可以正常签署 APK。

    【讨论】:

    • 这个解决方案对我不起作用,因为我不打算签署应用程序并且我不知道 API 密钥。然而,这是一个有用的答案。我要更新我的问题。
    • 我愿意接受你对这个问题的回答stackoverflow.com/q/17594737/1082344
    • @IsaacCisneros 这个解决方案适合你。如果您的客户知道如何签署应用程序,他们将了解如何使用 api 密钥作为参数运行您的脚本。
    【解决方案3】:

    使用 MapView

    的构造

    public MapView(android.content.Context context,java.lang.String apiKey)

    参数:

    上下文 - MapActivity 对象。

    apiKey - Google 地图 API 密钥。有关完整信息,请参阅获取 Maps API 密钥。

    【讨论】:

      【解决方案4】:

      根据谷歌的文档:

      一旦您拥有 Maps API 密钥,您需要从 XML 布局的 MapView 元素中的特殊属性(android:apiKey)引用它。 如果您直接从代码中实例化 MapView,则应在 MapView 构造函数中传递 Maps API 密钥

      所以使用 mapsView 的构造函数传递您的 API 密钥。 请查看this link 了解更多信息

      编辑

      这里有一个代码 sn-p 来解决您的问题:

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

      【讨论】:

      • com.google.android.gms.maps.MapView 类不存在这样的构造函数。
      • 您的代码适用于 com.google.android.maps.MapView 但不适用于 com.google.android.gms.maps.MapView(它们是两个不同的类!)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2012-11-23
      • 1970-01-01
      相关资源
      最近更新 更多