#java #location #android-permissions #mapbox-android
#Ява #Расположение #android-разрешения #картографический ящик-android
Вопрос:
Я нашел этот способ управления разрешением на местоположение в java с помощью mapbox, но он не работает. Это мой код:
private void enableLocationComponent(@NonNull Style loadedMapStyle) { if (PermissionsManager.areLocationPermissionsGranted(this)) { LocationComponentOptions customLocationComponentOptions = LocationComponentOptions.builder(this) .pulseEnabled(true) .build(); LocationComponent locationComponent = mapboxMap.getLocationComponent(); locationComponent.activateLocationComponent( LocationComponentActivationOptions.builder(this, loadedMapStyle) .locationComponentOptions(customLocationComponentOptions) .build()); locationComponent.setLocationComponentEnabled(true); locationComponent.setCameraMode(CameraMode.TRACKING); locationComponent.setRenderMode(RenderMode.NORMAL); } else { Toast.makeText((Context)this, "GPS NON ATTIVO", Toast.LENGTH_LONG).show(); Log.d("gps","GPS NON ATTIVO"); permissionsManager = new PermissionsManager(this); permissionsManager.requestLocationPermissions(this); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); } @Override public void onExplanationNeeded(Listlt;Stringgt; permissionsToExplain) { Toast.makeText(this, R.string.user_location_permission_explanation, Toast.LENGTH_LONG).show(); } @Override public void onPermissionResult(boolean granted) { if (granted) { mapboxMap.getStyle(new Style.OnStyleLoaded() { @Override public void onStyleLoaded(@NonNull Style style) { enableLocationComponent(style); } }); } else { Toast.makeText(this, R.string.user_location_permission_not_granted, Toast.LENGTH_LONG).show(); finish(); } }
Я добавляю компонент местоположения на карту здесь:
@Override public void onStyleLoaded(@NonNull Style style) { giveStyle(style,symbolLayerIconFeatureList); enableLocationComponent(style); }
И onStyleLoaded находится внутри метода onMapReady()
Какой хороший способ управлять этими разрешениями?