地方选择器(谷歌地图)立即关闭,尽管我已经按照文档中的步骤操作



我已经一步一步地遵循了他们的文档,但它不起作用

  • 创建了一个谷歌开发者帐户
  • 创建了一个 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 );
        }
    }

最新更新