diff --git a/app/src/main/java/eu/faircode/email/ActivitySetup.java b/app/src/main/java/eu/faircode/email/ActivitySetup.java
index c90bf97c6c..e09b3688c6 100644
--- a/app/src/main/java/eu/faircode/email/ActivitySetup.java
+++ b/app/src/main/java/eu/faircode/email/ActivitySetup.java
@@ -38,9 +38,11 @@ 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;
@@ -66,6 +68,7 @@ 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;
@@ -103,6 +106,7 @@ 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,6 +256,20 @@ 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_fix, new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ startActivity(settings);
+ }
+ });
+ }
+
getSupportFragmentManager().addOnBackStackChangedListener(this);
if (getSupportFragmentManager().getFragments().size() == 0) {
@@ -297,6 +315,7 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
@Override
protected void onResume() {
super.onResume();
+
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
IntentFilter iff = new IntentFilter();
iff.addAction(ACTION_QUICK_SETUP);
@@ -305,6 +324,16 @@ 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
@@ -312,6 +341,9 @@ 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 9864203ce8..aa68408ae6 100644
--- a/app/src/main/java/eu/faircode/email/FragmentSetup.java
+++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java
@@ -20,7 +20,6 @@ package eu.faircode.email;
*/
import android.Manifest;
-import android.annotation.TargetApi;
import android.app.Dialog;
import android.content.ComponentName;
import android.content.Context;
@@ -29,7 +28,6 @@ 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;
@@ -76,8 +74,6 @@ public class FragmentSetup extends FragmentBase {
private Button btnDoze;
private Button btnBattery;
- private Button btnData;
-
private Button btnInbox;
private Group grpWelcome;
@@ -122,8 +118,6 @@ public class FragmentSetup extends FragmentBase {
btnDoze = view.findViewById(R.id.btnDoze);
btnBattery = view.findViewById(R.id.btnBattery);
- btnData = view.findViewById(R.id.btnData);
-
btnInbox = view.findViewById(R.id.btnInbox);
grpWelcome = view.findViewById(R.id.grpWelcome);
@@ -200,19 +194,6 @@ public class FragmentSetup extends FragmentBase {
}
});
- btnData.setOnClickListener(new View.OnClickListener() {
- @Override
- @TargetApi(Build.VERSION_CODES.N)
- public void onClick(View v) {
- try {
- startActivity(new Intent(Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS,
- Uri.parse("package:" + BuildConfig.APPLICATION_ID)));
- } catch (Throwable ex) {
- Log.e(ex);
- }
- }
- });
-
btnInbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -237,8 +218,6 @@ public class FragmentSetup extends FragmentBase {
tvDozeDone.setCompoundDrawables(null, null, null, null);
btnDoze.setEnabled(false);
- btnData.setVisibility(View.GONE);
-
btnInbox.setEnabled(false);
boolean welcome = prefs.getBoolean("welcome", true);
@@ -361,14 +340,6 @@ 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);
-
- // Power saving
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
- boolean saving = (cm != null &&
- cm.getRestrictBackgroundStatus() == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED);
- btnData.setVisibility(saving || BuildConfig.DEBUG ? 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 7d5c721dc7..d9d865dfbf 100644
--- a/app/src/main/res/layout/fragment_setup.xml
+++ b/app/src/main/res/layout/fragment_setup.xml
@@ -450,20 +450,6 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnDoze" />
-
-
-
-
To continuously receive email (optional)
In the next dialog, select \"All apps\" at the top, select this app and select and confirm \"Don\'t optimize\"
High battery usage?
- Disable data saving
+ Data saver is enabled
Go to messages
To do
Done