diff --git a/app/src/main/java/foundation/e/drive/receivers/ScreenOffReceiver.java b/app/src/main/java/foundation/e/drive/receivers/ScreenOffReceiver.java index 27d489598d6fb2b579ddd671612ac7a87c96541f..766f9477dce3200607101960e56eedc1a66b1535 100644 --- a/app/src/main/java/foundation/e/drive/receivers/ScreenOffReceiver.java +++ b/app/src/main/java/foundation/e/drive/receivers/ScreenOffReceiver.java @@ -42,7 +42,7 @@ public class ScreenOffReceiver extends BroadcastReceiver { if(intentAction == null){ Log.e(TAG, "intent Action is null"); } else if ( intent.getAction().equals(Intent.ACTION_SCREEN_OFF) - && CommonUtils.haveNetworkConnexion( context ) ) { + && CommonUtils.haveNetworkConnection( context ) ) { Log.d(TAG, "onReceive: ACTION_SCREEN_OFF"); Intent cloudIntent = new Intent(context, ObserverService.class); context.startService(cloudIntent); diff --git a/app/src/main/java/foundation/e/drive/services/ObserverService.java b/app/src/main/java/foundation/e/drive/services/ObserverService.java index c90b4167adcfebb0632a9d8c751f40ff51ce44e9..eda6c91134b2c89699cc9989a9bcc871e76afa79 100644 --- a/app/src/main/java/foundation/e/drive/services/ObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/ObserverService.java @@ -140,7 +140,7 @@ public class ObserverService extends Service implements OnRemoteOperationListene } //check for the case where intent has been launched by initializerService - if (!CommonUtils.haveNetworkConnexion(this)) { + if (!CommonUtils.haveNetworkConnection(this)) { Log.w(TAG, "There is no Internet connexion."); return super.onStartCommand( intent, flags, startId ); } diff --git a/app/src/main/java/foundation/e/drive/services/OperationManagerService.java b/app/src/main/java/foundation/e/drive/services/OperationManagerService.java index c523f54c61328d9a37a655acad1f50e558dd6c4b..2c0bb07b8c6d6927a03d31a8efab0587a5025baa 100644 --- a/app/src/main/java/foundation/e/drive/services/OperationManagerService.java +++ b/app/src/main/java/foundation/e/drive/services/OperationManagerService.java @@ -41,7 +41,6 @@ import foundation.e.drive.operations.UploadFileOperation; import foundation.e.drive.utils.AppConstants; import foundation.e.drive.utils.CommonUtils; import foundation.e.drive.utils.DavClientProvider; -import foundation.e.drive.utils.ServiceExceptionHandler; /** * @author Vincent Bourgmayer @@ -110,7 +109,7 @@ public class OperationManagerService extends Service implements OnRemoteOperatio } } //start the new Job - if( !mThreadWorkingState[threadIndex] && CommonUtils.haveNetworkConnexion( getApplicationContext() ) ) { //check if the thread corresponding to threadIndex isn't already working + if( !mThreadWorkingState[threadIndex] && CommonUtils.haveNetworkConnection( getApplicationContext() ) ) { //check if the thread corresponding to threadIndex isn't already working ComparableOperation operation = this.mOperationsQueue.poll(); //return null if deque is empty if (operation != null) { diff --git a/app/src/main/java/foundation/e/drive/utils/CommonUtils.java b/app/src/main/java/foundation/e/drive/utils/CommonUtils.java index e0f762fcb4f2d104db8baa88938f26276ddbee85..3bc17bb3df5288cf874cd22b06b50c4376a4b4b7 100644 --- a/app/src/main/java/foundation/e/drive/utils/CommonUtils.java +++ b/app/src/main/java/foundation/e/drive/utils/CommonUtils.java @@ -18,6 +18,7 @@ import android.content.Context; import android.media.MediaScannerConnection; import android.net.ConnectivityManager; import android.net.Network; +import android.net.NetworkCapabilities; import android.net.NetworkInfo; import android.net.Uri; import android.util.Log; @@ -195,29 +196,28 @@ public abstract class CommonUtils { } /** - * Tell if there is internet connexion + * Tell if there is internet connection * * @param context Activity or service which are calling this method - * @return True if there is connexion, false either + * @return True if there is connection, false either */ - public static boolean haveNetworkConnexion(Context context) { - Log.i(TAG, "haveNetworkConnexion()"); - boolean haveConnectedWifi = false; - boolean haveConnectedMobile = false; - - ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo[] netInfo = cm.getAllNetworkInfo(); - for (NetworkInfo ni : netInfo) { - if (ni.getType()== ConnectivityManager.TYPE_WIFI) // Replaced the ni.getTypeName by ni.getType to make the test from ObserverServiceTest to work. But looks a better solution in all case - if (ni.isConnected()) - haveConnectedWifi = true; - if (ni.getType()== ConnectivityManager.TYPE_MOBILE) - if (ni.isConnected()) - haveConnectedMobile = true; + public static boolean haveNetworkConnection(Context context) { + Log.i(TAG, "haveNetworkConnection()"); + + ConnectivityManager cm = context.getSystemService(ConnectivityManager.class); + NetworkCapabilities capabilities = cm.getNetworkCapabilities(cm.getActiveNetwork()); + + if (capabilities != null + && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) + && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)) { + return true; } - return haveConnectedWifi || haveConnectedMobile; + return false; } + + /** * Get mimetype of file from the file itself *