android: Disable access to settings depending on managed configuration

This commit is contained in:
Markus Pfeiffer 2023-11-21 15:37:22 +01:00 committed by Tobias Brunner
parent fe13782e3c
commit 0af501ef26

View File

@ -18,15 +18,19 @@ package org.strongswan.android.ui;
import static org.strongswan.android.utils.Constants.PREF_DEFAULT_VPN_PROFILE;
import static org.strongswan.android.utils.Constants.PREF_DEFAULT_VPN_PROFILE_MRU;
import static org.strongswan.android.utils.Constants.PREF_IGNORE_POWER_WHITELIST;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import org.strongswan.android.R;
import org.strongswan.android.data.ManagedConfiguration;
import org.strongswan.android.data.ManagedConfigurationService;
import org.strongswan.android.data.VpnProfile;
import org.strongswan.android.data.VpnProfileDataSource;
import org.strongswan.android.data.VpnProfileSource;
import org.strongswan.android.logic.StrongSwanApplication;
import java.util.ArrayList;
import java.util.Collections;
@ -37,14 +41,21 @@ import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;
import androidx.preference.SwitchPreference;
public class SettingsFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener
{
private ManagedConfigurationService mManagedConfigurationService;
private ListPreference mDefaultVPNProfile;
private SwitchPreference mIgnorePowerWhitelist;
@Override
public void onCreatePreferences(Bundle bundle, String s)
{
mManagedConfigurationService = StrongSwanApplication.getInstance().getManagedConfigurationService();
mManagedConfigurationService.updateSettings();
setPreferencesFromResource(R.xml.settings, s);
mDefaultVPNProfile = findPreference(PREF_DEFAULT_VPN_PROFILE);
@ -53,6 +64,8 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer
{
mDefaultVPNProfile.setEnabled(false);
}
mIgnorePowerWhitelist = findPreference(PREF_IGNORE_POWER_WHITELIST);
}
@Override
@ -86,7 +99,8 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer
}
profiles.close();
if (entries.size() <= 1)
final ManagedConfiguration managedConfiguration = mManagedConfigurationService.getManagedConfiguration();
if (entries.size() <= 1 || !managedConfiguration.isAllowSettingsAccess())
{
mDefaultVPNProfile.setEnabled(false);
}
@ -96,6 +110,10 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer
mDefaultVPNProfile.setEntries(entries.toArray(new CharSequence[0]));
mDefaultVPNProfile.setEntryValues(entryvalues.toArray(new CharSequence[0]));
}
if (!managedConfiguration.isAllowSettingsAccess())
{
mIgnorePowerWhitelist.setEnabled(false);
}
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getActivity());
setCurrentProfileName(pref.getString(PREF_DEFAULT_VPN_PROFILE, PREF_DEFAULT_VPN_PROFILE_MRU));