Fix: Fixed locked apps to also allow DEVICE_CREDENTIAL not only Fingerprint

Signed-off-by: HeCodes2Much <wayne6324@gmail.com>
This commit is contained in:
HeCodes2Much
2024-07-06 10:28:18 +01:00
parent ff3a6f1c84
commit d2a0faf31e
6 changed files with 31 additions and 28 deletions

View File

@@ -12,7 +12,7 @@ import com.github.droidworksstudio.launcher.data.entities.AppInfo
import com.github.droidworksstudio.launcher.utils.Constants
import javax.inject.Inject
class FingerprintHelper @Inject constructor(private val fragment: Fragment) {
class BiometricHelper @Inject constructor(private val fragment: Fragment) {
private lateinit var callback: Callback
@@ -25,7 +25,7 @@ class FingerprintHelper @Inject constructor(private val fragment: Fragment) {
fun onAuthenticationError(errorCode: Int, errorMessage: CharSequence?)
}
fun startFingerprintAuth(appInfo: AppInfo, callback: Callback) {
fun startBiometricAuth(appInfo: AppInfo, callback: Callback) {
this.callback = callback
val authenticationCallback = object : BiometricPrompt.AuthenticationCallback() {
@@ -45,20 +45,23 @@ class FingerprintHelper @Inject constructor(private val fragment: Fragment) {
val executor = ContextCompat.getMainExecutor(fragment.requireContext())
val biometricPrompt = BiometricPrompt(fragment, executor, authenticationCallback)
val authenticators =
BiometricManager.Authenticators.BIOMETRIC_STRONG or BiometricManager.Authenticators.DEVICE_CREDENTIAL
val canAuthenticate =
BiometricManager.from(fragment.requireContext()).canAuthenticate(authenticators)
val promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle(fragment.getString(R.string.authentication_title))
.setSubtitle(fragment.getString(R.string.authentication_subtitle))
.setAllowedAuthenticators(BiometricManager.Authenticators.BIOMETRIC_WEAK or BiometricManager.Authenticators.DEVICE_CREDENTIAL)
.setAllowedAuthenticators(authenticators)
.build()
val canAuthenticate = BiometricManager.from(fragment.requireContext())
.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG)
if (canAuthenticate == BiometricManager.BIOMETRIC_SUCCESS) {
biometricPrompt.authenticate(promptInfo)
}
}
fun startFingerprintSettingsAuth(runNavigation: Int) {
fun startBiometricSettingsAuth(runNavigation: Int) {
val executor = ContextCompat.getMainExecutor(fragment.requireContext())
val biometricPrompt =
@@ -92,7 +95,7 @@ class FingerprintHelper @Inject constructor(private val fragment: Fragment) {
.setSubtitle(fragment.getString(R.string.authentication_subtitle))
val authenticators =
BiometricManager.Authenticators.BIOMETRIC_WEAK or BiometricManager.Authenticators.DEVICE_CREDENTIAL
BiometricManager.Authenticators.BIOMETRIC_STRONG or BiometricManager.Authenticators.DEVICE_CREDENTIAL
val canAuthenticate =
BiometricManager.from(fragment.requireContext()).canAuthenticate(authenticators)

View File

@@ -20,7 +20,7 @@ import com.github.droidworksstudio.launcher.data.entities.AppInfo
import com.github.droidworksstudio.launcher.databinding.BottomsheetDialogBinding
import com.github.droidworksstudio.launcher.helper.AppHelper
import com.github.droidworksstudio.launcher.helper.BottomDialogHelper
import com.github.droidworksstudio.launcher.helper.FingerprintHelper
import com.github.droidworksstudio.launcher.helper.BiometricHelper
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
import com.github.droidworksstudio.launcher.viewmodel.AppViewModel
import dagger.hilt.android.AndroidEntryPoint
@@ -28,7 +28,7 @@ import javax.inject.Inject
@AndroidEntryPoint
class AppInfoBottomSheetFragment(private val appInfo: AppInfo) : BottomSheetDialogFragment(),
FingerprintHelper.Callback {
BiometricHelper.Callback {
private var _binding: BottomsheetDialogBinding? = null
@@ -43,7 +43,7 @@ class AppInfoBottomSheetFragment(private val appInfo: AppInfo) : BottomSheetDial
lateinit var bottomDialogHelper: BottomDialogHelper
@Inject
lateinit var fingerHelper: FingerprintHelper
lateinit var fingerHelper: BiometricHelper
private var appStateClickListener: OnItemClickedListener.OnAppStateClickListener? = null
@@ -159,7 +159,7 @@ class AppInfoBottomSheetFragment(private val appInfo: AppInfo) : BottomSheetDial
binding.bottomSheetLock.setOnClickListener {
if (appInfo.lock) {
fingerHelper.startFingerprintAuth(appInfo, this)
fingerHelper.startBiometricAuth(appInfo, this)
} else {
appInfo.lock = true
viewModel.updateAppLock(appInfo, appInfo.lock)

View File

@@ -28,7 +28,7 @@ import com.github.droidworksstudio.launcher.adapter.drawer.DrawAdapter
import com.github.droidworksstudio.launcher.data.entities.AppInfo
import com.github.droidworksstudio.launcher.databinding.FragmentDrawBinding
import com.github.droidworksstudio.launcher.helper.AppHelper
import com.github.droidworksstudio.launcher.helper.FingerprintHelper
import com.github.droidworksstudio.launcher.helper.BiometricHelper
import com.github.droidworksstudio.launcher.helper.PreferenceHelper
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener
@@ -48,7 +48,7 @@ class DrawFragment : Fragment(),
OnItemClickedListener.OnAppLongClickedListener,
OnItemClickedListener.BottomSheetDismissListener,
OnItemClickedListener.OnAppStateClickListener,
FingerprintHelper.Callback, ScrollEventListener {
BiometricHelper.Callback, ScrollEventListener {
private var _binding: FragmentDrawBinding? = null
private val binding get() = _binding!!
@@ -60,7 +60,7 @@ class DrawFragment : Fragment(),
lateinit var appHelper: AppHelper
@Inject
lateinit var fingerHelper: FingerprintHelper
lateinit var fingerHelper: BiometricHelper
private val viewModel: AppViewModel by viewModels()
@@ -274,7 +274,7 @@ class DrawFragment : Fragment(),
if (!appInfo.lock) {
context.launchApp(appInfo)
} else {
fingerHelper.startFingerprintAuth(appInfo, this)
fingerHelper.startBiometricAuth(appInfo, this)
}
}

View File

@@ -23,7 +23,7 @@ import com.github.droidworksstudio.launcher.adapter.favorite.FavoriteAdapter
import com.github.droidworksstudio.launcher.data.entities.AppInfo
import com.github.droidworksstudio.launcher.databinding.FragmentFavoriteBinding
import com.github.droidworksstudio.launcher.helper.AppHelper
import com.github.droidworksstudio.launcher.helper.FingerprintHelper
import com.github.droidworksstudio.launcher.helper.BiometricHelper
import com.github.droidworksstudio.launcher.helper.PreferenceHelper
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
import com.github.droidworksstudio.launcher.listener.OnItemMoveListener
@@ -41,7 +41,7 @@ class FavoriteFragment : Fragment(),
OnItemClickedListener.BottomSheetDismissListener,
OnItemClickedListener.OnAppStateClickListener,
OnItemMoveListener.OnItemActionListener,
FingerprintHelper.Callback {
BiometricHelper.Callback {
private var _binding: FragmentFavoriteBinding? = null
private val binding get() = _binding!!
@@ -54,7 +54,7 @@ class FavoriteFragment : Fragment(),
lateinit var preferenceHelper: PreferenceHelper
@Inject
lateinit var fingerHelper: FingerprintHelper
lateinit var fingerHelper: BiometricHelper
@Inject
lateinit var appHelper: AppHelper
@@ -204,7 +204,7 @@ class FavoriteFragment : Fragment(),
if (!appInfo.lock) {
context.launchApp(appInfo)
} else {
fingerHelper.startFingerprintAuth(appInfo, this)
fingerHelper.startBiometricAuth(appInfo, this)
}
}

View File

@@ -20,7 +20,7 @@ import com.github.droidworksstudio.launcher.adapter.hidden.HiddenAdapter
import com.github.droidworksstudio.launcher.data.entities.AppInfo
import com.github.droidworksstudio.launcher.databinding.FragmentHiddenBinding
import com.github.droidworksstudio.launcher.helper.AppHelper
import com.github.droidworksstudio.launcher.helper.FingerprintHelper
import com.github.droidworksstudio.launcher.helper.BiometricHelper
import com.github.droidworksstudio.launcher.helper.PreferenceHelper
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener
@@ -35,7 +35,7 @@ class HiddenFragment : Fragment(),
OnItemClickedListener.OnAppLongClickedListener,
OnItemClickedListener.BottomSheetDismissListener,
OnItemClickedListener.OnAppStateClickListener,
FingerprintHelper.Callback {
BiometricHelper.Callback {
private var _binding: FragmentHiddenBinding? = null
private val binding get() = _binding!!
@@ -45,7 +45,7 @@ class HiddenFragment : Fragment(),
private lateinit var context: Context
@Inject
lateinit var fingerHelper: FingerprintHelper
lateinit var fingerHelper: BiometricHelper
@Inject
lateinit var appHelper: AppHelper
@@ -121,7 +121,7 @@ class HiddenFragment : Fragment(),
if (!appInfo.lock) {
context.launchApp(appInfo)
} else {
fingerHelper.startFingerprintAuth(appInfo, this)
fingerHelper.startBiometricAuth(appInfo, this)
}
}

View File

@@ -35,7 +35,7 @@ import com.github.droidworksstudio.launcher.adapter.home.HomeAdapter
import com.github.droidworksstudio.launcher.data.entities.AppInfo
import com.github.droidworksstudio.launcher.databinding.FragmentHomeBinding
import com.github.droidworksstudio.launcher.helper.AppHelper
import com.github.droidworksstudio.launcher.helper.FingerprintHelper
import com.github.droidworksstudio.launcher.helper.BiometricHelper
import com.github.droidworksstudio.launcher.helper.PreferenceHelper
import com.github.droidworksstudio.launcher.helper.UpdateManagerHelper
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
@@ -62,7 +62,7 @@ class HomeFragment : Fragment(),
OnItemClickedListener.OnAppLongClickedListener,
OnItemClickedListener.BottomSheetDismissListener,
OnItemClickedListener.OnAppStateClickListener,
FingerprintHelper.Callback, ScrollEventListener {
BiometricHelper.Callback, ScrollEventListener {
private var _binding: FragmentHomeBinding? = null
@@ -76,7 +76,7 @@ class HomeFragment : Fragment(),
@Inject
lateinit var fingerHelper: FingerprintHelper
lateinit var fingerHelper: BiometricHelper
private val viewModel: AppViewModel by viewModels()
private val preferenceViewModel: PreferenceViewModel by viewModels()
@@ -283,7 +283,7 @@ class HomeFragment : Fragment(),
if (!appInfo.lock)
context.launchApp(appInfo)
else
fingerHelper.startFingerprintAuth(appInfo, this)
fingerHelper.startBiometricAuth(appInfo, this)
}
private fun showSelectedApp(appInfo: AppInfo) {
@@ -455,7 +455,7 @@ class HomeFragment : Fragment(),
})
if (preferenceHelper.settingsLock) {
fingerHelper.startFingerprintSettingsAuth(R.id.action_HomeFragment_to_SettingsFragment)
fingerHelper.startBiometricSettingsAuth(R.id.action_HomeFragment_to_SettingsFragment)
} else {
val actionTypeNavOptions: NavOptions =
appHelper.getActionType(Constants.Swipe.DoubleTap)