如何将Google Location API与android棉花糖运行时权限系统集成?

如何将Google Location API与android棉花糖运行时权限系统集成?,android,android-6.0-marshmallow,android-permissions,google-location-services,Android,Android 6.0 Marshmallow,Android Permissions,Google Location Services,我正在尝试使用Google location API获取用户在我的活动中的位置。我有一个按钮,如果用户点击它,用户的位置应该被检索并发送到应用程序后端。 根据谷歌的文档 LocationServices.FusedLocationApi .getLastLocation(apiClient) 方法必须在onConnected方法中调用。但是,如果我没有检查用户授予的权限,该方法将抛出错误 我的问题是,我在我的按钮的onClick方法中请求许可 我

我正在尝试使用Google location API获取用户在我的活动中的位置。我有一个按钮,如果用户点击它,用户的位置应该被检索并发送到应用程序后端。 根据谷歌的文档

LocationServices.FusedLocationApi
                        .getLastLocation(apiClient)

方法必须在onConnected方法中调用。但是,如果我没有检查用户授予的权限,该方法将抛出错误

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

我试着把

LocationServices.FusedLocationApi
                        .getLastLocation(apiClient)
在onClick方法内部,但它返回空对象


有没有合适的方法可以在点击按钮时向用户请求位置权限,而不是在活动的onCreate方法中,并且仍然能够获取用户的位置?

我假设您正在呼叫:

mGoogleApiClient.connect();
在onStart中。它在活动启动时调用onConnected方法。您可以在请求运行时位置权限后单击按钮调用它。然后,您将能够在onConnected中获取LastLocation,并且不会遇到权限错误

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

希望这能有所帮助。

但是,如果我没有检查用户授予的权限,该方法将抛出错误-如果你没有检查用户授予的权限,你可能会在IDE中收到警告。这只是一个IDE警告。只要您确定在此之前正在检查运行时权限,就可以了。