开发工具: Android studio     废话话就不说了,下面是本人在用6.0版本手机中定位的时候也出现偏差,我自己是偏到非洲那边了,后来发现原来是缺少定位权限(注释:这里的权限指的不是配置文件里面的权限,是获取6.0版本手机的定位权限,调用时会提醒你是否使用,点击允许即可),下面是我已近在6.0手机(华为 mate8)上使用过了 ,在activity里里面调用 getPersimmions()方法即可(   前提:有权限,key,MapView组件,jar都有的情况下 ),并在该方法里面写上开始定位的方法,这是判断当前版本,获取权限(允许一次就可以,第二次进入既不会再次获取权限), 获取权限就可调用百度地图显示 就不会再6.0手机上出现定位出错的问题


private final int  
SDK_PERMISSION_REQUEST = 127; 
   @TargetApi 
(23) 

   /* 

    *判断当前是否是6.0版本 

    */ 

     @TargetApi(23) 

    private void getPersimmions() { 

        判断当前是否是6.0版本 

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 

            ArrayList<String> permissions = new ArrayList<String>(); 

            /*** 

             * 定位权限为必须权限,用户如果禁止,则每次进入都会申请 

             */ 

            // 定位精确位置 

            if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

                permissions.add(Manifest.permission.ACCESS_FINE_LOCATION); 


            } 

            if (checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

                permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION); 


            } 

            if (permissions.size() > 0) { 

                requestPermissions(permissions.toArray(new String[permissions.size()]), SDK_PERMISSION_REQUEST); 

            } else { 
//****这里写自己的定位调用***/
                 ///当权限都有时,开始定位 

                getMapView(); 

            } 

        } else { 

//****这里写自己的定位调用***/ 

             ///低于6.0以下,开始定位 

            getMapView(); 

        } 



    } 


    @TargetApi(23) 

    private boolean addPermission(ArrayList<String> permissionsList, String permission) { 

        if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { 

            // 如果应用没有获得对应权限,则添加到列表中,准备批量申请 

            if (shouldShowRequestPermissionRationale(permission)) { 

                return true; 

            } else { 

                permissionsList.add(permission); 

                return false; 

            } 


        } else { 

            return true; 

        } 

    } 


    /** 

     * 请求权限后,系统会弹出请求权限的Dialog 

     * 用户选择允许或需要后,会回调onRequestPermissionsResult方法, 该方法类似于onActivityResult 

     */ 

    @TargetApi(23) 

    @Override 

    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 

        // TODO Auto-generated method stub 

        ///权限允许后,开始定位 

        getMapView(); 

        super.onRequestPermissionsResult(requestCode, permissions, grantResults); 


    } 

   ///以下是百度地图代码/// 

    private void getMapView() { 

        // 设置是否显示比例尺控件 

        mapView.showScaleControl(true); 

        // 设置是否显示缩放控件 

        mapView.showZoomControls(false); 

        baiduMap = mapView.getMap(); 

        baiduMap.setMyLocationEnabled(true); 


        baiduMap.setMyLocationConfigeration(new MyLocationConfiguration( 

                locationmode, true, null)); 

        // 设置定位图层配置信息(跟随,罗盘,没有) 

        locationmode = MyLocationConfiguration.LocationMode.NORMAL; 

        // 创建定位服务的客户端 

        client = new LocationClient(this); 

        MyLocationListener listener = new MyLocationListener(); 

        client.registerLocationListener(listener); 

        // 开始定位 

        client.setLocOption(getDefaultLocationClientOption()); 

        client.start(); 

        startHandle(); 

    } 


    @SuppressWarnings("deprecation") 

    public LocationClientOption getDefaultLocationClientOption() { 

        if (option == null) { 

            option = new LocationClientOption(); 

            option.setOpenGps(true); 

            // 修复6.0错误 

            option.setPriority(LocationClientOption.GpsFirst); 

            option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); 

            // 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备 

            option.setCoorType("bd09ll");// 可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll; 

            option.setScanSpan(1500);// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的 

            option.setIsNeedAddress(false);// 可选,设置是否需要地址信息,默认不需要 

            option.setIsNeedLocationDescribe(false);// 可选,设置是否需要地址描述 

            option.setNeedDeviceDirect(true);// 可选,设置是否需要设备方向结果 

            option.setLocationNotify(false);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果 

            option.setIgnoreKillProcess(false);// 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死 

            option.setIsNeedLocationDescribe(false);// 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近” 

            option.setIsNeedLocationPoiList(false);// 可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到 

            option.SetIgnoreCacheException(false);// 可选,默认false,设置是否收集CRASH信息,默认收集 

        } 

        return option; 

    } 


    // 获取位置监听/// 

    private class MyLocationListener implements BDLocationListener { 


        public void onReceiveLocation(BDLocation location) { 


            if (location == null || mapView == null) 

                return; 

            获得当前的经纬度和地址 

            bdlocation = location; 

            MyLocationData locData = new MyLocationData.Builder() 

                    .accuracy(location.getRadius()) 

                    .direction(location.getDirection()) 

                    .latitude(location.getLatitude()) 

                    .longitude(location.getLongitude()).build(); 

            // 设置定位数据 

            baiduMap.setMyLocationData(locData); 


            if (isFirstLocation) { 

                isFirstLocation = false; 

                Log.i("经纬度:", "---" + location.getLatitude() + "\n" 

                        + location.getLongitude()); 

                LatLng latLng = new LatLng(location.getLatitude(), 

                        location.getLongitude()); 

                MapStatus mapStatus = new MapStatus.Builder().target(latLng) 

                        .zoom(13).build(); 

                MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory 

                        .newMapStatus(mapStatus); 

                // 以动画方式更新地图状态 

                baiduMap.animateMapStatus(mapStatusUpdate); 

            } 

        } 


        @SuppressWarnings("unused") 

        public void onReceivePoi(BDLocation poiLocation) { 

        } 
    }

以上就可读取手机权限,进行定位判断。。。。。