如何在android中动态提供地图api密钥

Ven*_*nan 5 android google-maps android-mapview android-maps-v2

我的 Android 应用程序中有一个用例,我的应用程序的用户必须提供 API 密钥,以便他们可以使用地图。

但我发现我必须在清单文件中提供 API 密钥。我无法在运行时编辑它。

有没有其他方法可以动态地将地图 API 密钥提供给谷歌地图(我正在使用 MapView)或动态更改元数据值的任何方法

Phi*_*Lab 4

不幸的是,这似乎根本不可能。

谷歌文档

https://developers.google.com/maps/documentation/android-sdk/get-api-key#add_key严格讨论清单以及如何将密钥添加到local.properties

打开项目级别目录中的 local.properties,然后添加以下代码。将 YOUR_API_KEY 替换为您的 API 密钥。

MAPS_API_KEY=YOUR_API_KEY

然后从清单中引用它:

在 AndroidManifest.xml 文件中,转到 com.google.android.geo.API_KEY 并更新 android:value 属性,如下所示:

<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="${MAPS_API_KEY}" />
Run Code Online (Sandbox Code Playgroud)

已弃用并已删除构造函数

显然,很久以前确实有一种在MapView手动实例化对象时注入密钥的方法(即不使用布局 xml):/sf/answers/821732761/

mMapView = new MapView(this, mapApiKey);
Run Code Online (Sandbox Code Playgroud)

但是,此构造函数已被删除,您无法再提供 API 密钥: https: //developers.google.com/maps/documentation/android-sdk/reference/com/google/android/libraries/maps/MapView ?hl= zh#public-constructor-summary

MapView(Context context)
MapView(Context context, AttributeSet attrs)
MapView(Context context, AttributeSet attrs, int defStyle)
MapView(Context context, GoogleMapOptions options) 
Run Code Online (Sandbox Code Playgroud)