summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2023-03-08 16:08:45 +0100
committerThomas <tschneider.ac@gmail.com>2023-03-08 16:08:45 +0100
commit2687f859352f5b853ebc01cc52a357b4d7d5bbf2 (patch)
tree0bcaa3f0fa5abfefdc6803c841a56cddcf190ca2
parent8548e6f098b400244d1792b04d43ba32d1899397 (diff)
Add ignore battery optimizations in cache settings
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentHomeCacheSettings.java30
-rw-r--r--app/src/main/res/xml/pref_home_cache.xml7
2 files changed, 37 insertions, 0 deletions
diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentHomeCacheSettings.java b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentHomeCacheSettings.java
index 9d05f83f6..8fe1f1dea 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentHomeCacheSettings.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentHomeCacheSettings.java
@@ -15,9 +15,15 @@ package app.fedilab.android.mastodon.ui.fragment.settings;
* see <http://www.gnu.org/licenses>. */
+import static android.content.Context.POWER_SERVICE;
+
import android.content.Intent;
import android.content.SharedPreferences;
+import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
+import android.os.PowerManager;
+import android.provider.Settings;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
@@ -77,6 +83,30 @@ public class FragmentHomeCacheSettings extends PreferenceFragmentCompat implemen
return false;
});
}
+
+
+ Preference SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS = findPreference(getString(R.string.SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS));
+ if (SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS != null) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ PowerManager pm = (PowerManager) requireActivity().getSystemService(POWER_SERVICE);
+ String packageName = requireActivity().getPackageName();
+ if (!pm.isIgnoringBatteryOptimizations(packageName)) {
+ SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS.setOnPreferenceClickListener(preference -> {
+ Intent intent = new Intent();
+ String packageName1 = requireActivity().getPackageName();
+ intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
+ intent.setData(Uri.parse("package:" + packageName1));
+ startActivity(intent);
+ return false;
+ });
+ } else {
+ preferenceScreen.removePreferenceRecursively(getString(R.string.SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS));
+ }
+ } else {
+ preferenceScreen.removePreferenceRecursively(getString(R.string.SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS));
+ }
+ }
+
}
diff --git a/app/src/main/res/xml/pref_home_cache.xml b/app/src/main/res/xml/pref_home_cache.xml
index 5bd761dc1..0337c23f8 100644
--- a/app/src/main/res/xml/pref_home_cache.xml
+++ b/app/src/main/res/xml/pref_home_cache.xml
@@ -30,4 +30,11 @@
app:icon="@drawable/baseline_show_chart_24"
app:iconSpaceReserved="false"
app:key="@string/pref_category_show_data" />
+
+
+ <Preference
+ app:iconSpaceReserved="false"
+ app:key="@string/SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS"
+ app:title="@string/set_remove_battery" />
+
</PreferenceScreen> \ No newline at end of file