diff --git a/app/src/fdroid/AndroidManifest.xml b/app/src/fdroid/AndroidManifest.xml index 28f888f1a3..d379e49c09 100644 --- a/app/src/fdroid/AndroidManifest.xml +++ b/app/src/fdroid/AndroidManifest.xml @@ -13,6 +13,7 @@ + diff --git a/app/src/github/AndroidManifest.xml b/app/src/github/AndroidManifest.xml index 28f888f1a3..d379e49c09 100644 --- a/app/src/github/AndroidManifest.xml +++ b/app/src/github/AndroidManifest.xml @@ -13,6 +13,7 @@ + diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index 05b4042802..9d18e82f09 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -22,6 +22,7 @@ package eu.faircode.email; import static android.app.Activity.RESULT_OK; import android.Manifest; +import android.annotation.SuppressLint; import android.app.ActivityManager; import android.app.Dialog; import android.content.Context; @@ -54,6 +55,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; import androidx.cardview.widget.CardView; @@ -479,8 +481,19 @@ public class FragmentSetup extends FragmentBase { btnDoze.setOnClickListener(new View.OnClickListener() { @Override + @SuppressLint("BatteryLife") + @RequiresApi(api = Build.VERSION_CODES.M) public void onClick(View v) { - new FragmentDialogDoze().show(getParentFragmentManager(), "setup:doze"); + if (hasPermission(Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)) { + Intent intent = new Intent(); + if (Boolean.FALSE.equals(Helper.isIgnoringOptimizations(v.getContext()))) + intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) + .setData(Uri.parse("package:" + v.getContext().getPackageName())); + else + intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); + v.getContext().startActivity(intent); + } else + new FragmentDialogDoze().show(getParentFragmentManager(), "setup:doze"); } });