diff options
author | Thomas <tschneider.ac@gmail.com> | 2023-03-08 16:08:45 +0100 |
---|---|---|
committer | Thomas <tschneider.ac@gmail.com> | 2023-03-08 16:08:45 +0100 |
commit | 2687f859352f5b853ebc01cc52a357b4d7d5bbf2 (patch) | |
tree | 0bcaa3f0fa5abfefdc6803c841a56cddcf190ca2 | |
parent | 8548e6f098b400244d1792b04d43ba32d1899397 (diff) |
Add ignore battery optimizations in cache settings
-rw-r--r-- | app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentHomeCacheSettings.java | 30 | ||||
-rw-r--r-- | app/src/main/res/xml/pref_home_cache.xml | 7 |
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 |