Android:我的位置按钮在 Android 6.0 上不起作用

Android: My location button doesn't work on Android 6.0

在其他机器人中一切正常,但在 6.0 中,MyLocationButton 不执行任何操作。这是我的代码

googleMap.getUiSettings().setMyLocationButtonEnabled(true);
googleMap.setMyLocationEnabled(true);
googleMap
                .setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {

                    @Override
                    public boolean onMyLocationButtonClick() {

                        Location location = googleMap.getMyLocation();
                        if (location == null) {
                           checkLocationSettings();
                           return true;
                        }

                        LatLng locationLatLng = new LatLng(location
                                .getLatitude(), location.getLongitude());
                        setMarkerToMap(locationLatLng );
                        //other staff
                        return false;
});

protected void checkLocationSettings() {
        PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi
                .checkLocationSettings(mGoogleApiClient,
                        mLocationSettingsRequest);
        result.setResultCallback(this);
    }

@Override
    public void onResult(LocationSettingsResult locationSettingsResult) {
        final Status status = locationSettingsResult.getStatus();
        switch (status.getStatusCode()) {
            case LocationSettingsStatusCodes.SUCCESS:

                break;
            case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
                try {
                    status.startResolutionForResult(this, REQUEST_CHECK_SETTINGS);
                } catch (IntentSender.SendIntentException e) {

                }
                break;

        }
    }

什么会导致这个问题?我想它必须用新权限做一些事情(在 Android 6.0 中),但我想不通。

请参考这些 link 并在运行时添加权限。

https://blog.xamarin.com/requesting-runtime-permissions-in-android- 棉花糖/

或者试试这些

创建verifyStoragePermissions()方法并在onCreateView()中调用 共 Activity

private static String[] PERMISSIONS_STORAGE = {
   Manifest.Permission.AccessCoarseLocation,
   Manifest.Permission.AccessFineLocation};
public static void verifyStoragePermissions(Activity activity)
int permission = ActivityCompat.checkSelfPermission(activity,
           Manifest.permission.AccessCoarseLocation);
if (permission != PackageManager.PERMISSION_GRANTED) 
ActivityCompat.requestPermissions(
            activity,
            PERMISSIONS_STORAGE,
            1001  // pass any request code
    );
}