是否可以通过编程方式设置Android Maps API v2密钥?

6

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

我能够使用API v1密钥做到这一点,但是我找不到MapView中的某些方法构造函数来处理当前API。


你为什么想要动态设置它? - MaciejGórski
这是一个奇怪的要求,因为他们(客户)想要自己签署和设置API密钥。我只需要提供未签名的apk文件。 - IsaacCisneros
4个回答

5

1
在APK文件中直接更改地图API v2密钥是可能的。只需编写一个脚本:解压APK,编辑二进制AndroidManifest以替换预定义值(例如XXXXXXX...)为给定的密钥,然后将其压缩回.apk。之后,您可以正常签署APK。

这个解决方案对我来说不可行,因为我不会签署应用程序,并且也不知道API密钥。但是这是一个有用的答案。我打算更新我的问题。 - IsaacCisneros
我想在这个问题http://stackoverflow.com/q/17594737/1082344中接受你的答案。 - IsaacCisneros
@IsaacCisneros 这个解决方案对您应该有效。如果您的客户知道如何签署应用程序,他们将理解如何使用API密钥作为参数运行您的脚本。 - MaciejGórski

0
根据谷歌的文档:
一旦您拥有了Maps API密钥,您需要在XML布局中的MapView元素中引用一个特殊属性--android:apiKey。如果您直接从代码实例化MapView,则应在MapView构造函数中传递Maps API密钥。
因此,请使用mapsView的构造函数传递您的API密钥。 请查看this link以获取更多信息。
编辑: 以下是您问题的代码片段:
@Override
protected void onCreate(Bundle arg0) {
     super.onCreate(arg0);
     String mapApiKey = <your choice logic here>
     mMapView = new MapView(this, mapApiKey);
     setContentView(mMapView);
}

2
com.google.android.gms.maps.MapView类不存在这样的构造函数。 - IsaacCisneros
5
你的代码适用于 com.google.android.maps.MapView,但不适用于 com.google.android.gms.maps.MapView(它们是两个不同的类!) - IsaacCisneros

0
使用这个MapView的结构: public MapView(android.content.Context context,java.lang.String apiKey) 参数: context - 一个MapActivity对象。 apiKey - Google Maps API密钥。有关完整信息,请参阅获取地图API密钥。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接