Squashed: * AppLockCredentialActivity is a stripped down version of ConfirmDeviceCredentialActivity in Settings Signed-off-by: jhonboy121 <alfredmathew05@gmail.com> Signed-off-by: Adithya R <gh0strider.2k18.reborn@gmail.com> Settings: applock: adapt for API changes Signed-off-by: jhonboy121 <alfredmathew05@gmail.com> Settings: use a new task stack for app lock fragments * fixes fragments staying in recents on going home * also made other preferences do binder calls asynchronously Signed-off-by: jhonboy121 <alfredmathew05@gmail.com> Signed-off-by: Adithya R <gh0strider.2k18.reborn@gmail.com> Settings: applock: fix unlock prompt disappearing when trying to open apps Signed-off-by: jhonboy121 <alfredmathew05@gmail.com> Settings: applock: add hidden app settings Signed-off-by: jhonboy121 <alfredmathew05@gmail.com> Signed-off-by: Adithya R <gh0strider.2k18.reborn@gmail.com> AppLockPackageConfigFragment: allow launching app from app icon Signed-off-by: jhonboy121 <alfredmathew05@gmail.com> FlamingoSettings: applock: early return in setChecked if backing field has the same value Signed-off-by: jhonboy121 <alfredmathew05@gmail.com> Signed-off-by: Adithya R <gh0strider.2k18.reborn@gmail.com> [nift4: drop useless plurals.xml, make timeout values translatable] * Dhina17 <dhinalogu@gmail.com> applock: Adapt for Android 14 Change-Id: I85d72ee72353417ead528483bbbe1ac1e6860063 Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
70 lines
2.2 KiB
Kotlin
70 lines
2.2 KiB
Kotlin
/*
|
|
* Copyright (C) 2022 FlamingoOS 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 com.android.settings.security.applock
|
|
|
|
import android.app.AppLockManager
|
|
import android.content.Context
|
|
|
|
import androidx.preference.Preference
|
|
import androidx.preference.PreferenceScreen
|
|
|
|
import kotlinx.coroutines.CoroutineScope
|
|
import kotlinx.coroutines.Dispatchers
|
|
import kotlinx.coroutines.launch
|
|
import kotlinx.coroutines.withContext
|
|
|
|
private const val KEY = "hide_from_launcher"
|
|
|
|
class AppLockHideAppPC(
|
|
context: Context,
|
|
private val packageName: String,
|
|
private val coroutineScope: CoroutineScope
|
|
) : AppLockTogglePreferenceController(context, KEY) {
|
|
|
|
private val appLockManager = context.getSystemService(AppLockManager::class.java)
|
|
private var hideFromLauncher = AppLockManager.DEFAULT_HIDE_IN_LAUNCHER
|
|
private var preference: Preference? = null
|
|
|
|
init {
|
|
coroutineScope.launch {
|
|
hideFromLauncher = withContext(Dispatchers.Default) {
|
|
appLockManager.hiddenPackages.any { it == packageName }
|
|
}
|
|
preference?.let {
|
|
updateState(it)
|
|
}
|
|
}
|
|
}
|
|
|
|
override fun getAvailabilityStatus() = AVAILABLE
|
|
|
|
override fun isChecked() = hideFromLauncher
|
|
|
|
override fun setChecked(checked: Boolean): Boolean {
|
|
if (hideFromLauncher == checked) return false
|
|
hideFromLauncher = checked
|
|
coroutineScope.launch(Dispatchers.Default) {
|
|
appLockManager.setPackageHidden(packageName, hideFromLauncher)
|
|
}
|
|
return true
|
|
}
|
|
|
|
override fun displayPreference(screen: PreferenceScreen) {
|
|
super.displayPreference(screen)
|
|
preference = screen.findPreference(preferenceKey)
|
|
}
|
|
} |