From cf3a070f69afb6ada277a31c338f5d250b9baabf Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Thu, 5 Aug 2021 08:27:45 +0530 Subject: [PATCH 1/2] implement ConnectivityReceiver for network --- app/src/main/AndroidManifest.xml | 11 ++++ .../drive/receivers/ConnectivityReceiver.java | 53 +++++++++++++++++++ .../e/drive/receivers/ScreenOffReceiver.java | 2 + .../e/drive/services/InitializerService.java | 30 ++++++++++- 4 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/foundation/e/drive/receivers/ConnectivityReceiver.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 760dd618..fafd9d3f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -111,5 +111,16 @@ http://www.gnu.org/licenses/gpl.html + + + + + + + + + diff --git a/app/src/main/java/foundation/e/drive/receivers/ConnectivityReceiver.java b/app/src/main/java/foundation/e/drive/receivers/ConnectivityReceiver.java new file mode 100644 index 00000000..b38d1286 --- /dev/null +++ b/app/src/main/java/foundation/e/drive/receivers/ConnectivityReceiver.java @@ -0,0 +1,53 @@ +package foundation.e.drive.receivers; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.util.Log; + +import java.io.IOException; + +public class ConnectivityReceiver + extends BroadcastReceiver { + + public static ConnectivityReceiverListener connectivityReceiverListener; + + public ConnectivityReceiver() { + super(); + } + + public boolean isConnected(Context context) { +// String command = "ping -c 1 google.com"; +// return (Runtime.getRuntime().exec(command).waitFor() == 0); + try { + ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo netInfo = cm.getActiveNetworkInfo(); + //should check null because in airplane mode it will be null + return (netInfo != null && netInfo.isConnected()); + } catch (NullPointerException e) { + e.printStackTrace(); + return false; + } + } + + @Override + public void onReceive(Context context, Intent arg1) { + ConnectivityManager cm = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); + + boolean isConnected = activeNetwork != null + && activeNetwork.isConnectedOrConnecting(); + + //if (connectivityReceiverListener != null) { + Log.e("TAG", "ConnectivityReceiver onNetworkConnectionChanged...." + isConnected); + //connectivityReceiverListener.onNetworkConnectionChanged(isConnected); + //} + } + + public interface ConnectivityReceiverListener { + void onNetworkConnectionChanged(boolean isConnected); + } +} \ No newline at end of file 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 ea72bee6..519cd481 100644 --- a/app/src/main/java/foundation/e/drive/receivers/ScreenOffReceiver.java +++ b/app/src/main/java/foundation/e/drive/receivers/ScreenOffReceiver.java @@ -38,6 +38,8 @@ public class ScreenOffReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "onReceive"); + // i will use this code for check file sync list + /*String intentAction = intent.getAction(); if(intentAction == null){ Log.e(TAG, "intent Action is null"); diff --git a/app/src/main/java/foundation/e/drive/services/InitializerService.java b/app/src/main/java/foundation/e/drive/services/InitializerService.java index b8ff3bb5..5ef9abb4 100644 --- a/app/src/main/java/foundation/e/drive/services/InitializerService.java +++ b/app/src/main/java/foundation/e/drive/services/InitializerService.java @@ -15,6 +15,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; +import android.net.ConnectivityManager; import android.os.Build; import android.os.Environment; import android.os.Handler; @@ -33,6 +34,7 @@ import java.util.List; import foundation.e.drive.models.SyncedFolder; import foundation.e.drive.operations.CreateInitialFolderRemoteOperation; +import foundation.e.drive.receivers.ConnectivityReceiver; import foundation.e.drive.receivers.ScreenOffReceiver; import foundation.e.drive.utils.AppConstants; import foundation.e.drive.utils.CommonUtils; @@ -47,7 +49,8 @@ import static foundation.e.drive.utils.AppConstants.SETTINGS_SYNCABLE_CATEGORIES /** * @author Vincent Bourgmayer */ -public class InitializerService extends Service implements OnRemoteOperationListener { +public class InitializerService extends Service + implements OnRemoteOperationListener, ConnectivityReceiver.ConnectivityReceiverListener { final private String TAG = InitializerService.class.getSimpleName(); //Complex properties private int existingRemoteFolderCounter; //@dev-only; Temporarily used to know if all remotePath exist @@ -56,6 +59,7 @@ public class InitializerService extends Service implements OnRemoteOperationList private Handler mHandler; private Account mAccount; private int restartFolderCreationCounter =0; + private ConnectivityReceiver connectivityReceiver; @Override public void onCreate() { @@ -63,8 +67,16 @@ public class InitializerService extends Service implements OnRemoteOperationList super.onCreate(); this.existingRemoteFolderCounter = 0; //JobUtils.scheduleInitializerJob(getApplicationContext()); + connectivityReceiver = new ConnectivityReceiver(); + registerNetworkBroadcastForNougat(); + } + private void registerNetworkBroadcastForNougat() { + + registerReceiver(connectivityReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); + + } @Override public int onStartCommand( Intent intent, int flags, int startId ) { Log.i(TAG, "onStartCommand(...)"); @@ -311,6 +323,14 @@ public class InitializerService extends Service implements OnRemoteOperationList this.mCloudClient = null; if(this.mSyncedFolders != null) this.mSyncedFolders.clear(); this.mSyncedFolders = null; + unregisterNetworkChanges(); + } + protected void unregisterNetworkChanges() { + try { + unregisterReceiver(connectivityReceiver); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } } @Nullable @@ -318,4 +338,12 @@ public class InitializerService extends Service implements OnRemoteOperationList public IBinder onBind(Intent intent) { return null; } + + @Override + public void onNetworkConnectionChanged(boolean isConnected) { + + //just for testing code for now + Log.e("TAG", "onNetworkConnectionChanged...." + isConnected); + + } } \ No newline at end of file -- GitLab From 590fa44815b2bb406dd193cb925c59e6dd9c697b Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Thu, 5 Aug 2021 08:32:29 +0530 Subject: [PATCH 2/2] worked on Feedback --- .../e/drive/receivers/ConnectivityReceiver.java | 2 +- .../foundation/e/drive/services/InitializerService.java | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/foundation/e/drive/receivers/ConnectivityReceiver.java b/app/src/main/java/foundation/e/drive/receivers/ConnectivityReceiver.java index b38d1286..066582a4 100644 --- a/app/src/main/java/foundation/e/drive/receivers/ConnectivityReceiver.java +++ b/app/src/main/java/foundation/e/drive/receivers/ConnectivityReceiver.java @@ -19,7 +19,7 @@ public class ConnectivityReceiver } public boolean isConnected(Context context) { -// String command = "ping -c 1 google.com"; +// String command = "ping -c 1 e.foundation"; // return (Runtime.getRuntime().exec(command).waitFor() == 0); try { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); diff --git a/app/src/main/java/foundation/e/drive/services/InitializerService.java b/app/src/main/java/foundation/e/drive/services/InitializerService.java index 5ef9abb4..ad556cea 100644 --- a/app/src/main/java/foundation/e/drive/services/InitializerService.java +++ b/app/src/main/java/foundation/e/drive/services/InitializerService.java @@ -68,11 +68,11 @@ public class InitializerService extends Service this.existingRemoteFolderCounter = 0; //JobUtils.scheduleInitializerJob(getApplicationContext()); connectivityReceiver = new ConnectivityReceiver(); - registerNetworkBroadcastForNougat(); + registerConnectivityReceiver(); } - private void registerNetworkBroadcastForNougat() { + private void registerConnectivityReceiver() { registerReceiver(connectivityReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); @@ -323,9 +323,9 @@ public class InitializerService extends Service this.mCloudClient = null; if(this.mSyncedFolders != null) this.mSyncedFolders.clear(); this.mSyncedFolders = null; - unregisterNetworkChanges(); + unregisterConnectivityReceiver(); } - protected void unregisterNetworkChanges() { + protected void unregisterConnectivityReceiver() { try { unregisterReceiver(connectivityReceiver); } catch (IllegalArgumentException e) { -- GitLab