Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Commit

Permalink
[android] #6617 - Introduce a setConnected method to manually set a c…
Browse files Browse the repository at this point in the history
…onnected flag

* [android] introduce a setConnected method to manually set a connected flag

* extend connected state to ConnectivityReceiver

* extend connected state to ConnectivityReceiver
  • Loading branch information
zugaldia authored Oct 11, 2016
1 parent e3c79bf commit 4cc7e7d
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -89,13 +91,30 @@ 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.
*
* @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;
}

ConnectivityManager cm = (ConnectivityManager) applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
return (activeNetwork != null && activeNetwork.isConnected());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 4cc7e7d

Please sign in to comment.