尽管我已按照文档中的步骤进行操作,但是地点选择器(Google地图)立即关闭

时间:2019-04-04 16:32:25

标签: android google-maps google-places-api

我已经逐步遵循了他们的文档,但是没有用

  • 创建了一个Google开发者帐户
  • 创建了一个API KEY(我已经 使用SHA1和软件包名称/我也尝试不添加限制条件)并启用了PLACES API(picture
  • 添加了以下内部应用程序标记
meta-data
    android:name="com.google.android.geo.API_KHTYEY"
    android:value="API_KEY_KEY_HERE"/>
  • 将此代码添加为简单活动中按钮的clickListener
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放在正确的位置。这绝对不是我的问题,因此任何人都可以阐明这一点吗?

2 个答案:

答案 0 :(得分:1)

看起来,要在整个弃用期内使用Place Picker,您需要启用“ Android版Places SDK”服务。从2019年1月29日开始,谷歌不再允许用户启用该服务,因此如果您在2019年1月29日之前未启用该服务,则无法使用Place Picker。目前,您只能启用“ Places API”,该功能不适用于Place Picker(仅适用于Android的Places SDK)。我有同样的问题,请看这里:Android Place Picker with API KEY created after January 29, 2019

答案 1 :(得分:0)

  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 );

        }
    }