From 7c845f759b3ed6238bd89e04deeec2f8c0d6cd8b Mon Sep 17 00:00:00 2001 From: Antonio Zugaldia Date: Thu, 6 Oct 2016 15:59:17 -0400 Subject: [PATCH 1/3] [android] introduce a setConnected method to manually set a connected flag --- .../mapboxsdk/MapboxAccountManager.java | 19 +++++++++++++++++++ .../activity/offline/OfflineActivity.java | 9 +++++++++ 2 files changed, 28 insertions(+) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccountManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccountManager.java index 0d192d302dc..9fa5bf6d776 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccountManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccountManager.java @@ -18,6 +18,8 @@ public class MapboxAccountManager { private final String accessToken; private final Context applicationContext; + private Boolean connected = null; + /** * MapboxAccountManager should NOT be instantiated directly. * Use @see MapboxAccountManager#getInstance() instead. @@ -89,6 +91,18 @@ public static void validateAccessToken(String accessToken) throws InvalidAccessT } } + /** + * Manually sets the connectivity state of the app. This is useful for apps that control their + * own connectivity state and want to bypass any checks to the ConnectivityManager. + * + * @param connected flag to determine the connectivity state, true for connected, false for + * disconnected, null for ConnectivityManager to determine. + */ + public void setConnected(Boolean connected) { + // Connectivity state overridden by app + this.connected = connected; + } + /** * Determines whether we have an Internet connection available. Please do not rely on this * method in your apps, this method is used internally by the SDK. @@ -96,6 +110,11 @@ public static void validateAccessToken(String accessToken) throws InvalidAccessT * @return true if there is an Internet connection, false otherwise */ public boolean isConnected() { + if (connected != null) { + // Connectivity state overridden by app + return connected; + } + ConnectivityManager cm = (ConnectivityManager) applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); return (activeNetwork != null && activeNetwork.isConnected()); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java index d3c66a22ad0..2ed9725bb75 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java @@ -13,8 +13,10 @@ import android.widget.ProgressBar; import android.widget.Toast; +import com.mapbox.mapboxsdk.MapboxAccountManager; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; +import com.mapbox.mapboxsdk.constants.MapboxConstants; import com.mapbox.mapboxsdk.constants.Style; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.geometry.LatLngBounds; @@ -73,6 +75,13 @@ protected void onCreate(Bundle savedInstanceState) { actionBar.setDisplayShowHomeEnabled(true); } + // You can use MapboxAccountManager.setConnected(Boolean) to manually set the connectivity + // state of your app. This will override any checks performed via the ConnectivityManager. + //MapboxAccountManager.getInstance().setConnected(false); + boolean connected = MapboxAccountManager.getInstance().isConnected(); + Log.d(LOG_TAG, String.format(MapboxConstants.MAPBOX_LOCALE, + "MapboxAccountManager is connected: %b", connected)); + // Set up map mapView = (MapView) findViewById(R.id.mapView); mapView.setStyleUrl(Style.MAPBOX_STREETS); From b5fb46cc0e8061fab47b0761a00185689df63f89 Mon Sep 17 00:00:00 2001 From: Antonio Zugaldia Date: Fri, 7 Oct 2016 14:16:58 -0400 Subject: [PATCH 2/3] extend connected state to ConnectivityReceiver --- .../java/com/mapbox/mapboxsdk/MapboxAccountManager.java | 2 +- .../com/mapbox/mapboxsdk/net/ConnectivityReceiver.java | 8 ++++++++ .../testapp/activity/offline/OfflineActivity.java | 2 +- platform/ios/vendor/SMCalloutView | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccountManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccountManager.java index 9fa5bf6d776..b33d01a105b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccountManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccountManager.java @@ -109,7 +109,7 @@ public void setConnected(Boolean connected) { * * @return true if there is an Internet connection, false otherwise */ - public boolean isConnected() { + public Boolean isConnected() { if (connected != null) { // Connectivity state overridden by app return connected; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/net/ConnectivityReceiver.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/net/ConnectivityReceiver.java index 823f4630307..85695ec6c9e 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/net/ConnectivityReceiver.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/net/ConnectivityReceiver.java @@ -9,6 +9,8 @@ import android.support.annotation.NonNull; import android.util.Log; +import com.mapbox.mapboxsdk.MapboxAccountManager; + import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; @@ -80,6 +82,12 @@ public void removeListener(@NonNull ConnectivityListener listener) { * @return true if connected */ public boolean isConnected(Context context) { + Boolean connected = MapboxAccountManager.getInstance().isConnected(); + if (connected != null) { + // Connectivity state overridden by app + return connected; + } + ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); return (activeNetwork != null && activeNetwork.isConnected()); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java index 2ed9725bb75..e9dd9dc5f42 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java @@ -78,7 +78,7 @@ protected void onCreate(Bundle savedInstanceState) { // You can use MapboxAccountManager.setConnected(Boolean) to manually set the connectivity // state of your app. This will override any checks performed via the ConnectivityManager. //MapboxAccountManager.getInstance().setConnected(false); - boolean connected = MapboxAccountManager.getInstance().isConnected(); + Boolean connected = MapboxAccountManager.getInstance().isConnected(); Log.d(LOG_TAG, String.format(MapboxConstants.MAPBOX_LOCALE, "MapboxAccountManager is connected: %b", connected)); diff --git a/platform/ios/vendor/SMCalloutView b/platform/ios/vendor/SMCalloutView index 2aede5d8d15..d6ecaba377c 160000 --- a/platform/ios/vendor/SMCalloutView +++ b/platform/ios/vendor/SMCalloutView @@ -1 +1 @@ -Subproject commit 2aede5d8d1577101bf18405246220e7a710df607 +Subproject commit d6ecaba377c9f963aef630faf86e3b8f8cdb88d1 From 09d86a16ccdf0bb7d6893d605a52b625d3fe489a Mon Sep 17 00:00:00 2001 From: Antonio Zugaldia Date: Fri, 7 Oct 2016 14:18:03 -0400 Subject: [PATCH 3/3] extend connected state to ConnectivityReceiver --- platform/ios/vendor/SMCalloutView | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/ios/vendor/SMCalloutView b/platform/ios/vendor/SMCalloutView index d6ecaba377c..2aede5d8d15 160000 --- a/platform/ios/vendor/SMCalloutView +++ b/platform/ios/vendor/SMCalloutView @@ -1 +1 @@ -Subproject commit d6ecaba377c9f963aef630faf86e3b8f8cdb88d1 +Subproject commit 2aede5d8d1577101bf18405246220e7a710df607