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 9d05f83f..8fe1f1de 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 . */ +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 5bd761dc..0337c23f 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" /> + + + + \ No newline at end of file