0

我正在尝试Activity使用 Google Location API 获取用户的位置。我有一个按钮,如果用户点击该按钮,则应检索用户的位置并将其发送到应用程序后端。根据 Google 的文档,

LocationServices.FusedLocationApi
                        .getLastLocation(apiClient)

方法必须在onConnected方法中调用。但是,如果我不检查用户授予的权限,该方法会引发错误。

onClick我的问题是我在我的按钮方法中请求许可。

我试着把

LocationServices.FusedLocationApi
                        .getLastLocation(apiClient)

onClick方法内部,但它返回一个空对象。

是否有适当的方法可以通过点击按钮而不是在onCreate活动方法中向用户询问位置许可并且仍然能够获取用户的位置?

4

1 回答 1

1

我假设你在打电话:

mGoogleApiClient.connect();

onStart(). onConnected()活动开始时调用该方法。在询问 Location 的运行时权限后,您可以在Button Click上调用它。然后您将能够进入getLastLocation()并且onConnected()您不会遇到权限错误。

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                   if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)){
                        mGoogleApiClient.connect();
                    }
                    else{
                        // ask run-time permission
                    }
                }
            }
        });

希望这可以帮助。

于 2017-04-02T19:06:41.090 回答