diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index 1eae6fced6..0d5c985b29 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -31,6 +31,7 @@ import android.graphics.Paint; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; +import android.net.Network; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -62,6 +63,7 @@ import java.util.List; public class FragmentSetup extends FragmentBase { private ViewGroup view; + private TextView tvNoInternet; private ImageButton ibHelp; private Button btnQuick; private TextView tvQuickNew; @@ -127,6 +129,7 @@ public class FragmentSetup extends FragmentBase { // Get controls + tvNoInternet = view.findViewById(R.id.tvNoInternet); ibHelp = view.findViewById(R.id.ibHelp); btnQuick = view.findViewById(R.id.btnQuick); tvQuickNew = view.findViewById(R.id.tvQuickNew); @@ -429,6 +432,7 @@ public class FragmentSetup extends FragmentBase { : R.color.lightColorBackground_cards)); } + tvNoInternet.setVisibility(View.GONE); btnIdentity.setEnabled(false); tvNoComposable.setVisibility(View.GONE); @@ -517,6 +521,11 @@ public class FragmentSetup extends FragmentBase { public void onResume() { super.onResume(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE); + cm.registerDefaultNetworkCallback(networkCallback); + } + // Doze Boolean ignoring = Helper.isIgnoringOptimizations(getContext()); @@ -553,6 +562,16 @@ public class FragmentSetup extends FragmentBase { } } + @Override + public void onPause() { + super.onPause(); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE); + cm.unregisterNetworkCallback(networkCallback); + } + } + @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { for (int i = 0; i < permissions.length; i++) @@ -571,6 +590,28 @@ public class FragmentSetup extends FragmentBase { btnPermissions.setEnabled(!granted); } + private ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() { + @Override + public void onAvailable(Network network) { + view.post(new Runnable() { + @Override + public void run() { + tvNoInternet.setVisibility(View.GONE); + } + }); + } + + @Override + public void onLost(@NonNull Network network) { + view.post(new Runnable() { + @Override + public void run() { + tvNoInternet.setVisibility(View.VISIBLE); + } + }); + } + }; + public static class FragmentDialogDoze extends FragmentDialogBase { @NonNull @Override diff --git a/app/src/main/res/layout/fragment_setup.xml b/app/src/main/res/layout/fragment_setup.xml index f2aeaa3a62..41e68ad875 100644 --- a/app/src/main/res/layout/fragment_setup.xml +++ b/app/src/main/res/layout/fragment_setup.xml @@ -112,6 +112,22 @@ app:layout_constraintStart_toEndOf="@id/one" app:layout_constraintTop_toTopOf="@id/one" /> + + + app:layout_constraintTop_toBottomOf="@id/tvNoInternet" />