diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java index 30bc470f0..3cd542bb1 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java @@ -7,4 +7,7 @@ public class MapboxConstants { // Default Locale for data processing (ex: String.toLowerCase(MAPBOX_LOCALE, "foo")) public static final Locale MAPBOX_LOCALE = Locale.US; + // Key used to store access token in AndroidManifest.xml + public static final String KEY_META_DATA_MANIFEST = "com.mapbox.AccessToken"; + } diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/ApiAccess.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/ApiAccess.java new file mode 100644 index 000000000..bec77f7ff --- /dev/null +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/ApiAccess.java @@ -0,0 +1,44 @@ +package com.mapbox.mapboxsdk.utils; + +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; +import android.support.annotation.NonNull; +import android.text.TextUtils; + +import com.mapbox.mapboxsdk.R; +import com.mapbox.mapboxsdk.constants.MapboxConstants; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class ApiAccess { + + public static String getToken(@NonNull Context context) { + String accessToken = getReleaseToken(context); + if (TextUtils.isEmpty(accessToken)) { + accessToken = getDevelopmentToken(context); + } + return accessToken; + } + + private static String getReleaseToken(@NonNull Context context){ + try { + PackageManager packageManager = context.getPackageManager(); + ApplicationInfo appInfo = packageManager.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA); + return appInfo.metaData.getString(MapboxConstants.KEY_META_DATA_MANIFEST); + } catch (Exception e) { + return null; + } + } + + private static String getDevelopmentToken(@NonNull Context context) { + try { + BufferedReader reader = new BufferedReader(new InputStreamReader(context.getResources().openRawResource(R.raw.token))); + return reader.readLine(); + }catch (IOException e){ + return null; + } + } +} diff --git a/android/java/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml b/android/java/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml index e0de39162..dfd43694f 100644 --- a/android/java/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml +++ b/android/java/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml @@ -38,7 +38,7 @@ android:value="9724157045ff7d083492c6d9ae03e60e8609d461" /> diff --git a/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/InfoWindowAdapterActivity.java b/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/InfoWindowAdapterActivity.java index 6c77bf951..08311c968 100644 --- a/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/InfoWindowAdapterActivity.java +++ b/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/InfoWindowAdapterActivity.java @@ -12,6 +12,7 @@ import android.widget.TextView; import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.annotations.MarkerOptions; import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.utils.ApiAccess; import com.mapbox.mapboxsdk.views.MapView; public class InfoWindowAdapterActivity extends AppCompatActivity { @@ -35,7 +36,7 @@ public class InfoWindowAdapterActivity extends AppCompatActivity { } mMapView = (MapView) findViewById(R.id.secondMapView); - mMapView.setAccessToken(Util.getAccessToken(this)); + mMapView.setAccessToken(ApiAccess.getToken(this)); mMapView.onCreate(savedInstanceState); mMapView.setStyleUrl(MapView.StyleUrls.MAPBOX_STREETS); mMapView.setInfoWindowAdapter(new MapView.InfoWindowAdapter() { diff --git a/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java b/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java index 36107abea..99a8a0073 100644 --- a/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java +++ b/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java @@ -30,6 +30,7 @@ import com.mapbox.mapboxsdk.annotations.MarkerOptions; import com.mapbox.mapboxsdk.annotations.PolygonOptions; import com.mapbox.mapboxsdk.annotations.PolylineOptions; import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.utils.ApiAccess; import com.mapbox.mapboxsdk.views.MapView; import io.fabric.sdk.android.Fabric; @@ -100,7 +101,7 @@ public class MainActivity extends AppCompatActivity { } mMapView = (MapView) findViewById(R.id.mainMapView); - mMapView.setAccessToken(Util.getAccessToken(this)); + mMapView.setAccessToken(ApiAccess.getToken(this)); mMapView.onCreate(savedInstanceState); mMapView.setOnFpsChangedListener(new MyOnFpsChangedListener()); diff --git a/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/Util.java b/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/Util.java index deb26a5dd..d28424621 100644 --- a/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/Util.java +++ b/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/Util.java @@ -63,36 +63,4 @@ public class Util { } return sb.toString(); } - - // TODO move this to SDK - public static String getAccessToken(Context context) { - String accessToken = getReleaseAccessToken(context); - if (TextUtils.isEmpty(accessToken)) { - accessToken = getDevelopmentAccessToken(context); - } - // TODO add validation + throw exception - return accessToken; - } - - // TODO move this to SDK - private static String getReleaseAccessToken(Context context){ - try { - PackageManager packageManager = context.getPackageManager(); - ApplicationInfo appInfo = packageManager.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA); - return appInfo.metaData.getString("com.mapbox.accessToken"); - } catch (Exception e) { - Log.e(TAG, "Failed to load AccessToken: " + e.getMessage()); - return null; - } - } - - // TODO move this to SDK - private static String getDevelopmentAccessToken(Context context) { - try { - BufferedReader reader = new BufferedReader(new InputStreamReader(context.getResources().openRawResource(R.raw.token))); - return reader.readLine(); - }catch (IOException e){ - return null; - } - } }