summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorLeith Bade <leith@mapbox.com>2015-10-09 11:15:26 +1100
committerLeith Bade <leith@mapbox.com>2015-10-09 11:15:26 +1100
commit01f242cbd98fb110e8f084d7507b7fabd02fecbd (patch)
tree3e3bc94d2bd14b6a3a1926e3db26c0b2edfc076a /android
parent4f6f2c19fd58f07a39a43c8547fe75534ec12905 (diff)
downloadqtlocation-mapboxgl-01f242cbd98fb110e8f084d7507b7fabd02fecbd.tar.gz
Tidy up new ApiAccess token class.
Fix .gitignore for token.txt Add JavaDoc to ApiAccess. Create specific exception for missing access token. Closes #2570 Closes #2563
Diffstat (limited to 'android')
-rw-r--r--android/java/.gitignore2
-rw-r--r--android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/ApiAccess.java22
-rw-r--r--android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/InvalidAccessTokenException.java18
-rw-r--r--android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java9
4 files changed, 45 insertions, 6 deletions
diff --git a/android/java/.gitignore b/android/java/.gitignore
index 574d1ad73c..626b995946 100644
--- a/android/java/.gitignore
+++ b/android/java/.gitignore
@@ -21,7 +21,7 @@ MapboxGLAndroidSDK/src/main/assets/
local.properties
# Token file
-MapboxGLAndroidSDK/src/main/res/raw/token.txt
+MapboxGLAndroidSDKTestApp/src/main/res/raw/token.txt
# Twitter Fabric / Crashlytics
fabric.properties
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
index bec77f7ff0..e6259cf446 100644
--- 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
@@ -4,6 +4,7 @@ import android.content.Context;
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 com.mapbox.mapboxsdk.R;
@@ -13,8 +14,23 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
-public class ApiAccess {
+/**
+ * {@link ApiAccess} provides a method to load the Mapbox access token.
+ */
+public final class ApiAccess {
+ /**
+ * Returns the Mapbox access token set in the app resources.
+ * <p/>
+ * It will first search the application manifest for a {@link MapboxConstants#KEY_META_DATA_MANIFEST}
+ * meta-data value. If not found it will then attempt to load the access token from the
+ * {@code res/raw/token.txt} development file.
+ *
+ * @param context The {@link Context} of the {@link android.app.Activity} or {@link android.app.Fragment}.
+ * @return The Mapbox access token or null if not found.
+ * @see MapboxConstants#KEY_META_DATA_MANIFEST
+ */
+ @Nullable
public static String getToken(@NonNull Context context) {
String accessToken = getReleaseToken(context);
if (TextUtils.isEmpty(accessToken)) {
@@ -23,7 +39,7 @@ public class ApiAccess {
return accessToken;
}
- private static String getReleaseToken(@NonNull Context context){
+ private static String getReleaseToken(@NonNull Context context) {
try {
PackageManager packageManager = context.getPackageManager();
ApplicationInfo appInfo = packageManager.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
@@ -37,7 +53,7 @@ public class ApiAccess {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(context.getResources().openRawResource(R.raw.token)));
return reader.readLine();
- }catch (IOException e){
+ } catch (IOException e) {
return null;
}
}
diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/InvalidAccessTokenException.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/InvalidAccessTokenException.java
new file mode 100644
index 0000000000..d8581a6fd6
--- /dev/null
+++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/InvalidAccessTokenException.java
@@ -0,0 +1,18 @@
+package com.mapbox.mapboxsdk.views;
+
+import android.os.Bundle;
+
+/**
+ * A {@link InvalidAccessTokenException} is thrown by {@link MapView} when there is either no access
+ * token set before {@link MapView#onCreate(Bundle)} or an invalid access token is set in {@link MapView#setAccessToken(String)}
+ *
+ * @see MapView#onCreate(Bundle)
+ * @see MapView#setAccessToken(String)
+ */
+public class InvalidAccessTokenException extends RuntimeException {
+
+ InvalidAccessTokenException() {
+ super("Using MapView requires setting a valid access token. See the README.md");
+ }
+
+}
diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java
index da91153de7..92ac06fd9d 100644
--- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java
+++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java
@@ -62,6 +62,7 @@ import com.mapbox.mapboxsdk.annotations.PolylineOptions;
import com.mapbox.mapboxsdk.geometry.BoundingBox;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.geometry.LatLngZoom;
+import com.mapbox.mapboxsdk.utils.ApiAccess;
import com.mapzen.android.lost.api.LocationListener;
import com.mapzen.android.lost.api.LocationRequest;
import com.mapzen.android.lost.api.LocationServices;
@@ -79,7 +80,7 @@ import java.util.List;
* You can center the map on a given coordinate, specify the size of the area you want to display,
* and style the features of the map to fit your application's use case.
* <p/>
- * Use of {@link MapView} requires a Mapbox API access token.
+ * Use of {@code MapView} requires a Mapbox API access token.
* Obtain an access token on the <a href="https://www.mapbox.com/account/apps/">Mapbox account page</a>.
* <p/>
* <strong>Warning:</strong> Please note that you are responsible for getting permission to use the map data,
@@ -1503,7 +1504,7 @@ public final class MapView extends FrameLayout implements LocationListener, Comp
// Checks if the given token is valid
private void validateAccessToken(String accessToken) {
if (TextUtils.isEmpty(accessToken) || (!accessToken.startsWith("pk.") && !accessToken.startsWith("sk."))) {
- throw new RuntimeException("Using MapView requires setting a valid access token. See the README.md");
+ throw new InvalidAccessTokenException();
}
}
@@ -1512,9 +1513,13 @@ public final class MapView extends FrameLayout implements LocationListener, Comp
* <p/>
* You must set a valid access token before you call {@link MapView#onCreate(Bundle)}
* or an exception will be thrown.
+ * <p/>
+ * You can use {@link ApiAccess#getToken(Context)} to load an access token from your
+ * application's manifest.
*
* @param accessToken Your public Mapbox access token.
* @see MapView#onCreate(Bundle)
+ * @see ApiAccess#getToken(Context)
*/
@UiThread
public void setAccessToken(@NonNull String accessToken) {