android - Places for Android API 已弃用替代方案
问题描述
我试图实现 Places API。我的代码如下所示:
val builder = PlacePicker.IntentBuilder()
startActivityForResult(builder.build(mActivity), PLACE_PICKER_REQUEST)
我的地图凭据是正确的,但我接到了这个电话
您的应用似乎未启用 Places API for Android。有关更多详细信息,请参阅https://developers.google.com/places/android/signup。
但是,当我尝试启用“Places API for Android”时,我收到了这个错误。
您没有足够的权限查看此页面。
我尝试注销我的帐户,再次登录,隐身模式,Safari 和 Chrome。没有任何效果,所以我联系了支持,速度非常快(谢谢大家!)
您在尝试启用 Places for Android API 时收到错误的原因是它已被弃用。现在将通过启用 Places API 来涵盖 Android 的 Places 功能。
我询问了我的实施并得到了答复。
地点选择器也已被弃用。您可以安装兼容性库以继续使用 Place Picker,直到弃用期于 7 月 29 日结束。有关这方面的更多信息可以在此处显示为红色: https ://developers.google.com/places/android-sdk/client-migration#place_picker
我现在在网上找到的文档有点混乱,什么是弃用的,什么不是?谁能为我指出这种功能的正确方向?
解决方案
适用于 Android 的 Google Places SDK 已弃用,因此我们需要迁移Places API。要使用新的 Places API 实现AutoComplete Place .. 请按照以下步骤操作。
首先在开发者控制台中启用 PlacesAPI,然后通过在 gradle 中更新来安装客户端库。
(注意:您只能安装客户端库或兼容性库,不能同时安装)
implementation 'com.google.android.libraries.places:places:1.0.0'
现在在 Oncreate() 中初始化下面的代码;
// Add an import statement for the client library.
import com.google.android.libraries.places.api.Places;
// Initialize Places.
Places.initialize(getApplicationContext(), "***YOUR API KEY***");
// Create a new Places client instance.
PlacesClient placesClient = Places.createClient(this);
新 PlacesAPI 已初始化..
对于自动完成的地方使用下面的代码(你也可以使用自动完成片段)
// Set the fields to specify which types of place data to return.
List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
// Start the autocomplete intent.
Intent intent = new Autocomplete.IntentBuilder(
AutocompleteActivityMode.FULLSCREEN, fields)
.build(this);
startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Place place = Autocomplete.getPlaceFromIntent(data);
Log.i(TAG, "Place: " + place.getName() + ", " + place.getId());
} else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
// TODO: Handle the error.
Status status = Autocomplete.getStatusFromIntent(data);
Log.i(TAG, status.getStatusMessage());
} else if (resultCode == RESULT_CANCELED) {
// The user canceled the operation.
}
}
}
- 确保清单中的权限
- 生成的 API 密钥。
- 在开发控制台中启用了 Places API。
删除(如果您添加了)
implementation 'com.google.android.gms:play-services-places:16.0.0'
需要的头文件
import com.google.android.libraries.places.api.Places;
import com.google.android.libraries.places.api.model.Place;
import com.google.android.libraries.places.api.net.PlacesClient;
import com.google.android.libraries.places.widget.Autocomplete;
import com.google.android.libraries.places.widget.AutocompleteActivity;
import com.google.android.libraries.places.widget.model.AutocompleteActivityMode;
希望这会有所帮助..
推荐阅读
- vb.net-2010 - 我怎样才能在我的图片框中看到图像?
- c# - ASP.NET Core 2.0 Identity,2 个控制器分别重定向到不同的登录页面
- html - 根据背景设置表格最后一个元素的边框
- powerbi - 创建一个新列并以数字值显示
- ios - android 库的 Swift 替代品
- reactjs - React Unexpected token < - babel loader
- r - WGCNA - modulePreservation() 中的错误:不允许重复的 row.names
- javascript - target="_blank" 在某些移动设备上不起作用
- sql-server - 通过预过滤结果加速 SQL 视图
- javascript - Vuex:如何定义一个状态变量,其值基于另一个状态变量的值?