diff --git a/app/src/main/java/org/galexander/sshd/Settings.java b/app/src/main/java/org/galexander/sshd/Settings.java index 3808ab0..4d162aa 100644 --- a/app/src/main/java/org/galexander/sshd/Settings.java +++ b/app/src/main/java/org/galexander/sshd/Settings.java @@ -1,11 +1,49 @@ package org.galexander.sshd; +import android.os.Build; import android.os.Bundle; +import android.preference.CheckBoxPreference; +import android.preference.Preference; import android.preference.PreferenceActivity; +import android.widget.Toast; public class Settings extends PreferenceActivity { + private CheckBoxPreference pref_onboot, pref_foreground; + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); + + pref_onboot = (CheckBoxPreference)findPreference("onboot"); + pref_foreground = + (CheckBoxPreference)findPreference("foreground"); + + Preference.OnPreferenceChangeListener l = + new Preference.OnPreferenceChangeListener() { + public boolean onPreferenceChange(Preference p, + Object v_) { + boolean v =((Boolean)v_).booleanValue(); + ((CheckBoxPreference)p).setChecked(v); + check(); + return false; + } }; + pref_onboot.setOnPreferenceChangeListener(l); + pref_foreground.setOnPreferenceChangeListener(l); + } + + public void onResume() { + super.onResume(); + check(); + } + + private void check() { + if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) && + pref_onboot.isChecked() && + !pref_foreground.isChecked()) { + pref_foreground.setChecked(true); + Toast.makeText(this, +"Android Oreo will not start a background service at boot. Forcing foreground.", + Toast.LENGTH_LONG).show(); + } } }