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