如何在 android 中动态给地图 api 键

How to give map api key dynamically in android

我的 android 应用程序中有一个用例,我的应用程序的用户必须提供 API 密钥才能使用地图。

但我看到我必须在清单文件中提供 API 键。我无法在运行时编辑它。

是否有任何其他方法可以将地图 API 键动态地提供给 google 地图(我正在使用 MapView)或任何动态更改元数据值的方法

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

Google 文档

https://developers.google.com/maps/documentation/android-sdk/get-api-key#add_key 严格讲manifest 和如何把key 添加到local.properties:

Open the local.properties in your project level directory, and then add the following code. Replace YOUR_API_KEY with your API key.

MAPS_API_KEY=YOUR_API_KEY

然后从清单中引用它:

In your AndroidManifest.xml file, go to com.google.android.geo.API_KEY and update the android:value attribute as follows:

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

已弃用并已删除构造函数

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

mMapView = new MapView(this, mapApiKey);

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

MapView(Context context)
MapView(Context context, AttributeSet attrs)
MapView(Context context, AttributeSet attrs, int defStyle)
MapView(Context context, GoogleMapOptions options)