pa: extensions: Import Secure Setting preferences.

Co-authored-by: Christian Oder <myself5@carbonrom.org>
Co-authored-by: SpiritCroc <spiritcroc@gmail.com>
Change-Id: I0a4a3510c8e0c4603fa334a3db4165c8b1e927dc
This commit is contained in:
Adnan Begovic 2017-10-26 22:58:16 -04:00 committed by Alexander Koskovich
parent 825f13c172
commit 3a9392a2c1
4 changed files with 169 additions and 0 deletions

View File

@ -0,0 +1,21 @@
// Copyright (C) 2020 Paranoid Android
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
android_library {
name: "co.aospa.framework",
srcs: ["src/**/*.java"],
static_libs: [
"androidx.preference_preference",
],
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2020 Paranoid Android
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="co.aospa.framework">
<uses-sdk
android:minSdkVersion="30" />
</manifest>

View File

@ -0,0 +1,52 @@
/*
* Copyright (C) 2014 The CyanogenMod project
* 2020 Android Ice Cold Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package co.aospa.framework.preference;
import android.content.Context;
import android.util.AttributeSet;
import androidx.preference.SwitchPreference;
public class SecureSettingSwitchPreference extends SwitchPreference {
public SecureSettingSwitchPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
}
public SecureSettingSwitchPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
}
public SecureSettingSwitchPreference(Context context) {
super(context);
setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
}
@Override
protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
// This is what default TwoStatePreference implementation is doing without respecting
// real default value:
//setChecked(restoreValue ? getPersistedBoolean(mChecked)
// : (Boolean) defaultValue);
// Instead, we better do
setChecked(restoreValue ? getPersistedBoolean((Boolean) defaultValue)
: (Boolean) defaultValue);
}
}

View File

@ -0,0 +1,74 @@
/*
* Copyright (C) 2020 Android Ice Cold Project
* CarbonROM
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package co.aospa.framework.preference;
import android.content.ContentResolver;
import android.preference.PreferenceDataStore;
import android.provider.Settings;
public class SecureSettingsStore extends androidx.preference.PreferenceDataStore
implements PreferenceDataStore {
private ContentResolver mContentResolver;
public SecureSettingsStore(ContentResolver contentResolver) {
mContentResolver = contentResolver;
}
public boolean getBoolean(String key, boolean defValue) {
return getInt(key, defValue ? 1 : 0) != 0;
}
public float getFloat(String key, float defValue) {
return Settings.Secure.getFloat(mContentResolver, key, defValue);
}
public int getInt(String key, int defValue) {
return Settings.Secure.getInt(mContentResolver, key, defValue);
}
public long getLong(String key, long defValue) {
return Settings.Secure.getLong(mContentResolver, key, defValue);
}
public String getString(String key, String defValue) {
String result = Settings.Secure.getString(mContentResolver, key);
return result == null ? defValue : result;
}
public void putBoolean(String key, boolean value) {
putInt(key, value ? 1 : 0);
}
public void putFloat(String key, float value) {
Settings.Secure.putFloat(mContentResolver, key, value);
}
public void putInt(String key, int value) {
Settings.Secure.putInt(mContentResolver, key, value);
}
public void putLong(String key, long value) {
Settings.Secure.putLong(mContentResolver, key, value);
}
public void putString(String key, String value) {
Settings.Secure.putString(mContentResolver, key, value);
}
}