Add ignore battery optimizations in cache settings

fetch_indicator
Thomas 2 years ago
parent 8548e6f098
commit 2687f85935

@ -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));
}
}
}

@ -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>
Loading…
Cancel
Save