summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java64
1 files changed, 49 insertions, 15 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java
index 4fd0200a37..d086b3329e 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java
@@ -2,41 +2,74 @@ package com.mapbox.mapboxsdk;
import android.content.Context;
import android.content.SharedPreferences;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.text.format.DateUtils;
import com.mapbox.android.accounts.v1.MapboxAccounts;
import com.mapbox.mapboxsdk.constants.MapboxConstants;
+import com.mapbox.mapboxsdk.log.Logger;
/**
- * REMOVAL OR MODIFICATION OF THE FOLLOWING CODE VIOLATES THE MAPBOX TERMS
- * OF SERVICE
+ * IF YOU USE THIS CODE WITH MAPBOX MAPPING API, REMOVAL OR MODIFICATION OF
+ * THE FOLLOWING CODE VIOLATES THE MAPBOX TERMS OF SERVICE.
*
- * The following code is used to access Mapbox's Mapping APIs.
+ * The following code is used to access Mapbox's Mapping APIs. Removal or
+ * modification of this code when used with Mapbox's Mapping APIs can result
+ * in higher fees and/or termination of your account with Mapbox.
*
- * Removal or modification of this code when used with Mapbox's Mapping APIs
- * can result in termination of your agreement and/or your account with
- * Mapbox.
+ * Under the Mapbox Terms of Service, you may not use this code to access
+ * Mapbox Mapping APIs other than through Mapbox SDKs.
*
- * Using this code to access Mapbox Mapping APIs from outside the Mapbox Maps
- * SDK also violates the Mapbox Terms of Service. On Android, Mapping APIs
- * should be accessed using the methods documented at
- * https://www.mapbox.com/android.
- *
- * You can access the Mapbox Terms of Service at https://www.mapbox.com/tos/
+ * The Android documentation to access Mapping APIs is available at
+ * https://www.mapbox.com/android and the Mapbox Terms of Service are
+ * available at https://www.mapbox.com/tos/.
*/
class AccountsManager {
+ private static final String TAG = "Mbgl-AccountsManager";
+
private static final String PREFERENCE_USER_ID = "com.mapbox.mapboxsdk.accounts.userid";
private static final String PREFERENCE_TIMESTAMP = "com.mapbox.mapboxsdk.accounts.timestamp";
private static final String PREFERENCE_SKU_TOKEN = "com.mapbox.mapboxsdk.accounts.skutoken";
private long timestamp;
+ @Nullable
private String skuToken;
+ private boolean isEnabled;
+
AccountsManager() {
- String userId = validateUserId();
- validateRotation(userId);
+ isEnabled = isSkuTokenEnabled();
+ if (isEnabled) {
+ String userId = validateUserId();
+ validateRotation(userId);
+ } else {
+ timestamp = 0L;
+ skuToken = null;
+ }
+ }
+
+ private boolean isSkuTokenEnabled() {
+ boolean value = MapboxConstants.DEFAULT_ENABLE_SKU_TOKEN;
+ try {
+ // Try getting a custom value from the app Manifest
+ ApplicationInfo appInfo = Mapbox.getApplicationContext().getPackageManager().getApplicationInfo(
+ Mapbox.getApplicationContext().getPackageName(),
+ PackageManager.GET_META_DATA);
+ if (appInfo.metaData != null) {
+ value = appInfo.metaData.getBoolean(
+ MapboxConstants.KEY_META_DATA_ENABLE_SKU_TOKEN,
+ MapboxConstants.DEFAULT_ENABLE_SKU_TOKEN
+ );
+ }
+ } catch (Exception exception) {
+ Logger.e(TAG, "Failed to read the package metadata: ", exception);
+ }
+
+ return value;
}
private String validateUserId() {
@@ -62,8 +95,9 @@ class AccountsManager {
}
}
+ @Nullable
String getSkuToken() {
- if (isExpired()) {
+ if (isEnabled && isExpired()) {
SharedPreferences sharedPreferences = getSharedPreferences();
String userId = sharedPreferences.getString(PREFERENCE_USER_ID, "");
skuToken = generateSkuToken(userId);