最近接手别人写的代码,发现一个问题,申请定位权限后,第一次不能正常显示地图定位;同意后,第二次就好了。
研究代码发现,她使用的是权限申请的工具类,但是回调部分没写,导致只申请了,申请成功后,不能再次调用定位方法,导致第一次地图不展示。
先贴出解决办法,回调需要写注解。关键就是加上注解,要不然,成功之后,找不到要调用的方法。PermissionSuccess则是权限同意后自动调用的。
@PermissionSuccess(requestCode = AREA_CODE) public void requestLocation() { BMap.getInstance().requestLocation(true, new BMap.OnLocationListener() { @Override public void onLocationFinish(Position pos) { mPos = pos; initMapView(pos); } }); }@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); PermissionHelper.requestPermissionsResult(this, requestCode, permissions, grantResults); }
申请权限是这么写的,在onCreate里面调用即可
private void getPersimmions() { PermissionHelper.with(this). requestPermission(PERMISSION_AREA). requestCode(AREA_CODE). request(); }