diff --git a/app/src/main/java/eu/faircode/email/ActivitySetup.java b/app/src/main/java/eu/faircode/email/ActivitySetup.java
index 5056551b5a..9cb8a05049 100644
--- a/app/src/main/java/eu/faircode/email/ActivitySetup.java
+++ b/app/src/main/java/eu/faircode/email/ActivitySetup.java
@@ -31,18 +31,15 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
-import android.content.pm.PackageManager;
import android.content.res.AssetFileDescriptor;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.media.Ringtone;
import android.media.RingtoneManager;
-import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
-import android.provider.Settings;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.MenuItem;
@@ -68,7 +65,6 @@ import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
-import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.textfield.TextInputLayout;
import org.json.JSONArray;
@@ -106,7 +102,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
private ActionBarDrawerToggle drawerToggle;
private ConstraintLayout drawerContainer;
private RecyclerView rvMenu;
- private Snackbar sbDataSaver;
private boolean hasAccount;
private String password;
@@ -252,20 +247,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
adapter.set(menus);
- sbDataSaver = Snackbar.make(view, R.string.title_setup_data, Snackbar.LENGTH_INDEFINITE);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- final Intent settings = new Intent(
- Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS,
- Uri.parse("package:" + BuildConfig.APPLICATION_ID));
- if (settings.resolveActivity(getPackageManager()) != null)
- sbDataSaver.setAction(R.string.title_setup_manage, new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- startActivity(settings);
- }
- });
- }
-
getSupportFragmentManager().addOnBackStackChangedListener(this);
if (getSupportFragmentManager().getFragments().size() == 0) {
@@ -320,16 +301,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
iff.addAction(ACTION_EDIT_ACCOUNT);
iff.addAction(ACTION_EDIT_IDENTITY);
lbm.registerReceiver(receiver, iff);
-
- // https://developer.android.com/training/basics/network-ops/data-saver.html
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
- if (cm != null) {
- int status = cm.getRestrictBackgroundStatus();
- if (status == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED)
- sbDataSaver.show();
- }
- }
}
@Override
@@ -337,9 +308,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
super.onPause();
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
lbm.unregisterReceiver(receiver);
-
- if (sbDataSaver.isShown())
- sbDataSaver.dismiss();
}
@Override
diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java
index 24b604d0f2..6c478b5a3d 100644
--- a/app/src/main/java/eu/faircode/email/FragmentSetup.java
+++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java
@@ -28,6 +28,8 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
+import android.net.ConnectivityManager;
+import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.PowerManager;
@@ -73,9 +75,12 @@ public class FragmentSetup extends FragmentBase {
private Button btnDoze;
private Button btnBattery;
+ private Button btnDataSaver;
+
private Button btnInbox;
private Group grpWelcome;
+ private Group grpDataSaver;
private int textColorPrimary;
private int colorWarning;
@@ -117,9 +122,12 @@ public class FragmentSetup extends FragmentBase {
btnDoze = view.findViewById(R.id.btnDoze);
btnBattery = view.findViewById(R.id.btnBattery);
+ btnDataSaver = view.findViewById(R.id.btnDataSaver);
+
btnInbox = view.findViewById(R.id.btnInbox);
grpWelcome = view.findViewById(R.id.grpWelcome);
+ grpDataSaver = view.findViewById(R.id.grpDataSaver);
PackageManager pm = getContext().getPackageManager();
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
@@ -191,6 +199,20 @@ public class FragmentSetup extends FragmentBase {
}
});
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ final Intent settings = new Intent(
+ Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS,
+ Uri.parse("package:" + BuildConfig.APPLICATION_ID));
+
+ btnDataSaver.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ startActivity(settings);
+ }
+ });
+ btnDataSaver.setEnabled(settings.resolveActivity(pm) != null);
+ }
+
btnInbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -219,6 +241,7 @@ public class FragmentSetup extends FragmentBase {
boolean welcome = prefs.getBoolean("welcome", true);
grpWelcome.setVisibility(welcome ? View.VISIBLE : View.GONE);
+ grpDataSaver.setVisibility(View.GONE);
int[] grantResults = new int[permissions.length];
for (int i = 0; i < permissions.length; i++)
@@ -349,6 +372,17 @@ public class FragmentSetup extends FragmentBase {
tvDozeDone.setText(ignoring ? R.string.title_setup_done : R.string.title_setup_to_do);
tvDozeDone.setTextColor(ignoring ? textColorPrimary : colorWarning);
tvDozeDone.setCompoundDrawablesWithIntrinsicBounds(ignoring ? check : null, null, null, null);
+
+ // https://developer.android.com/training/basics/network-ops/data-saver.html
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+ if (cm != null) {
+ int status = cm.getRestrictBackgroundStatus();
+ grpDataSaver.setVisibility(
+ status == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED
+ ? View.VISIBLE : View.GONE);
+ }
+ }
}
@Override
diff --git a/app/src/main/res/layout/fragment_setup.xml b/app/src/main/res/layout/fragment_setup.xml
index d059a092e0..4f3cce381b 100644
--- a/app/src/main/res/layout/fragment_setup.xml
+++ b/app/src/main/res/layout/fragment_setup.xml
@@ -451,6 +451,29 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnDoze" />
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/btnDataSaver" />
+ app:constraint_referenced_ids="tvWelcome,ibWelcome,vSeparatorWelcome" />
+
+
\ No newline at end of file