我已经一步一步地遵循了他们的文档,但它不起作用
- 创建了一个谷歌开发者帐户
- 创建了一个 API 密钥(我已经使用了 SHA1 和包名称/我也尝试了不添加 restricitons(并启用了 PLACES API(图片(
- 添加了以下内部应用程序标记
meta-data
android:name="com.google.android.geo.API_KHTYEY"
android:value="API_KEY_KEY_HERE"/>
- 将此代码添加为简单活动中按钮的单击侦听器
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
try {
startActivityForResult(builder.build(activity), PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException e) {
e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
}
});
结果:地点选取器活动开始,但立即关闭。我试图找到解决方案,但每个人都在谈论将api_key放在正确的位置。这绝对不是我的问题,所以谁能阐明这一点?
看起来要在弃用期内使用Place Picker,您需要启用"适用于Android的地方SDK"服务。自 2019 年 1 月 29 日起,Google 不再分配用户来启用该服务,因此如果您在 2019 年 1 月 29 日之前未启用该服务,则无法使用 Place Picker。现在,您只能启用不适用于 Place Picker 的"Places API"(只有 Android 版 Places SDK 可以(。我有同样的问题,看这里:2019 年 1 月 29 日之后创建的带有 API KEY 的 Android Place Picker
button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick (View v){
openPlacePicker ();
}
});
private void openPlacePicker() {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder ();
try {
startActivityForResult ( builder.build ( this ), PLACE_PICKER_REQUEST );
//Enable Wifi
wifiManager.setWifiEnabled ( true );
} catch (GooglePlayServicesRepairableException e) {
// Log.d("Exception",e.getMessage());
e.printStackTrace ();
} catch (GooglePlayServicesNotAvailableException e) {
//Log.d("Exception",e.getMessage());
e.printStackTrace ();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult ( requestCode, resultCode, data );
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PLACE_PICKER_REQUEST:
Place place = PlacePicker.getPlace ( MainActivity.this, data );
double latitude = place.getLatLng ().latitude;
double longitude = place.getLatLng ().longitude;
CharSequence address = place.getAddress ();
String PlaceLatLng = String.valueOf ( latitude ) + " , " + String.valueOf ( longitude );
tv_MyLocation.setText ( PlaceLatLng );
}
}