diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-07-09 12:35:38 +0200 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2019-07-11 11:02:24 +0200 |
commit | 348c437c0a3fb177dc53b2a0b0a64e422964b82f (patch) | |
tree | a10f675f9a33177e91c63fd431b2ff0668588122 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox | |
parent | 1c931e4006e669816d24b35897bd4c24a8993ae4 (diff) | |
download | qtlocation-mapboxgl-348c437c0a3fb177dc53b2a0b0a64e422964b82f.tar.gz |
[android] throw configuration exception when accessing Mapbox services with an invalid token
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox')
4 files changed, 40 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java index 5a1c49a0a4..01c82ddad4 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java @@ -5,6 +5,7 @@ import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.UiThread; + import com.mapbox.mapboxsdk.constants.MapboxConstants; import com.mapbox.mapboxsdk.exceptions.MapboxConfigurationException; import com.mapbox.mapboxsdk.log.Logger; @@ -87,6 +88,20 @@ public final class Mapbox { public static void setAccessToken(String accessToken) { validateMapbox(); INSTANCE.accessToken = accessToken; + + // cleanup telemetry which is dependent on an access token + if (INSTANCE.telemetry != null) { + INSTANCE.telemetry.disableTelemetrySession(); + INSTANCE.telemetry = null; + } + + // initialize components dependent on a token + if (isAccessTokenValid(accessToken)) { + initializeTelemetry(); + INSTANCE.accounts = new AccountsManager(); + } else { + INSTANCE.accounts = null; + } FileSource.getInstance(getApplicationContext()).setAccessToken(accessToken); } @@ -97,6 +112,13 @@ public final class Mapbox { * @return the SKU token */ public static String getSkuToken() { + if (INSTANCE.accounts == null) { + throw new MapboxConfigurationException( + "A valid access token parameter is required when using a Mapbox service." + + "\nPlease see https://www.mapbox.com/help/create-api-access-token/ to learn how to create one." + + "\nMore information in this guide https://www.mapbox.com/help/first-steps-android-sdk/#access-tokens." + + "Currently provided token is: " + INSTANCE.accessToken); + } return INSTANCE.accounts.getSkuToken(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/MapboxConfigurationException.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/MapboxConfigurationException.java index 86032aa2b5..431de85f05 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/MapboxConfigurationException.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/MapboxConfigurationException.java @@ -1,6 +1,7 @@ package com.mapbox.mapboxsdk.exceptions; import android.content.Context; +import android.support.annotation.NonNull; /** * A MapboxConfigurationException is thrown by MapboxMap when the SDK hasn't been properly initialised. @@ -22,4 +23,11 @@ public class MapboxConfigurationException extends RuntimeException { + "\nPlease see https://www.mapbox.com/help/create-api-access-token/ to learn how to create one." + "\nMore information in this guide https://www.mapbox.com/help/first-steps-android-sdk/#access-tokens."); } + + /** + * Creates a Mapbox configuration exception thrown by MapboxMap when the SDK hasn't been properly initialised. + */ + public MapboxConfigurationException(@NonNull String message) { + super(message); + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java index fd9950b141..863d821a12 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TelemetryDefinition.java @@ -33,6 +33,11 @@ public interface TelemetryDefinition { void setUserTelemetryRequestState(boolean enabled); /** + * Disables a started telemetry service for this session only. + */ + void disableTelemetrySession(); + + /** * Set the end-user selected state to participate or opt-out in telemetry collection. */ void setDebugLoggingEnabled(boolean debugLoggingEnabled); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java index 92e9f44d50..e33fb7c1b5 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/telemetry/TelemetryImpl.java @@ -79,6 +79,11 @@ public class TelemetryImpl implements TelemetryDefinition { } } + @Override + public void disableTelemetrySession() { + telemetry.disable(); + } + /** * Set the debug logging state of telemetry. * |