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" />