Fix: Fixed locked apps to also allow DEVICE_CREDENTIAL not only Fingerprint
Signed-off-by: HeCodes2Much <wayne6324@gmail.com>
This commit is contained in:
@@ -12,7 +12,7 @@ import com.github.droidworksstudio.launcher.data.entities.AppInfo
|
|||||||
import com.github.droidworksstudio.launcher.utils.Constants
|
import com.github.droidworksstudio.launcher.utils.Constants
|
||||||
import javax.inject.Inject
|
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
|
private lateinit var callback: Callback
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ class FingerprintHelper @Inject constructor(private val fragment: Fragment) {
|
|||||||
fun onAuthenticationError(errorCode: Int, errorMessage: CharSequence?)
|
fun onAuthenticationError(errorCode: Int, errorMessage: CharSequence?)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun startFingerprintAuth(appInfo: AppInfo, callback: Callback) {
|
fun startBiometricAuth(appInfo: AppInfo, callback: Callback) {
|
||||||
this.callback = callback
|
this.callback = callback
|
||||||
|
|
||||||
val authenticationCallback = object : BiometricPrompt.AuthenticationCallback() {
|
val authenticationCallback = object : BiometricPrompt.AuthenticationCallback() {
|
||||||
@@ -45,20 +45,23 @@ class FingerprintHelper @Inject constructor(private val fragment: Fragment) {
|
|||||||
val executor = ContextCompat.getMainExecutor(fragment.requireContext())
|
val executor = ContextCompat.getMainExecutor(fragment.requireContext())
|
||||||
val biometricPrompt = BiometricPrompt(fragment, executor, authenticationCallback)
|
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()
|
val promptInfo = BiometricPrompt.PromptInfo.Builder()
|
||||||
.setTitle(fragment.getString(R.string.authentication_title))
|
.setTitle(fragment.getString(R.string.authentication_title))
|
||||||
.setSubtitle(fragment.getString(R.string.authentication_subtitle))
|
.setSubtitle(fragment.getString(R.string.authentication_subtitle))
|
||||||
.setAllowedAuthenticators(BiometricManager.Authenticators.BIOMETRIC_WEAK or BiometricManager.Authenticators.DEVICE_CREDENTIAL)
|
.setAllowedAuthenticators(authenticators)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val canAuthenticate = BiometricManager.from(fragment.requireContext())
|
|
||||||
.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG)
|
|
||||||
if (canAuthenticate == BiometricManager.BIOMETRIC_SUCCESS) {
|
if (canAuthenticate == BiometricManager.BIOMETRIC_SUCCESS) {
|
||||||
biometricPrompt.authenticate(promptInfo)
|
biometricPrompt.authenticate(promptInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun startFingerprintSettingsAuth(runNavigation: Int) {
|
fun startBiometricSettingsAuth(runNavigation: Int) {
|
||||||
val executor = ContextCompat.getMainExecutor(fragment.requireContext())
|
val executor = ContextCompat.getMainExecutor(fragment.requireContext())
|
||||||
|
|
||||||
val biometricPrompt =
|
val biometricPrompt =
|
||||||
@@ -92,7 +95,7 @@ class FingerprintHelper @Inject constructor(private val fragment: Fragment) {
|
|||||||
.setSubtitle(fragment.getString(R.string.authentication_subtitle))
|
.setSubtitle(fragment.getString(R.string.authentication_subtitle))
|
||||||
|
|
||||||
val authenticators =
|
val authenticators =
|
||||||
BiometricManager.Authenticators.BIOMETRIC_WEAK or BiometricManager.Authenticators.DEVICE_CREDENTIAL
|
BiometricManager.Authenticators.BIOMETRIC_STRONG or BiometricManager.Authenticators.DEVICE_CREDENTIAL
|
||||||
val canAuthenticate =
|
val canAuthenticate =
|
||||||
BiometricManager.from(fragment.requireContext()).canAuthenticate(authenticators)
|
BiometricManager.from(fragment.requireContext()).canAuthenticate(authenticators)
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ import com.github.droidworksstudio.launcher.data.entities.AppInfo
|
|||||||
import com.github.droidworksstudio.launcher.databinding.BottomsheetDialogBinding
|
import com.github.droidworksstudio.launcher.databinding.BottomsheetDialogBinding
|
||||||
import com.github.droidworksstudio.launcher.helper.AppHelper
|
import com.github.droidworksstudio.launcher.helper.AppHelper
|
||||||
import com.github.droidworksstudio.launcher.helper.BottomDialogHelper
|
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.listener.OnItemClickedListener
|
||||||
import com.github.droidworksstudio.launcher.viewmodel.AppViewModel
|
import com.github.droidworksstudio.launcher.viewmodel.AppViewModel
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
@@ -28,7 +28,7 @@ import javax.inject.Inject
|
|||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class AppInfoBottomSheetFragment(private val appInfo: AppInfo) : BottomSheetDialogFragment(),
|
class AppInfoBottomSheetFragment(private val appInfo: AppInfo) : BottomSheetDialogFragment(),
|
||||||
FingerprintHelper.Callback {
|
BiometricHelper.Callback {
|
||||||
|
|
||||||
private var _binding: BottomsheetDialogBinding? = null
|
private var _binding: BottomsheetDialogBinding? = null
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ class AppInfoBottomSheetFragment(private val appInfo: AppInfo) : BottomSheetDial
|
|||||||
lateinit var bottomDialogHelper: BottomDialogHelper
|
lateinit var bottomDialogHelper: BottomDialogHelper
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var fingerHelper: FingerprintHelper
|
lateinit var fingerHelper: BiometricHelper
|
||||||
|
|
||||||
private var appStateClickListener: OnItemClickedListener.OnAppStateClickListener? = null
|
private var appStateClickListener: OnItemClickedListener.OnAppStateClickListener? = null
|
||||||
|
|
||||||
@@ -159,7 +159,7 @@ class AppInfoBottomSheetFragment(private val appInfo: AppInfo) : BottomSheetDial
|
|||||||
|
|
||||||
binding.bottomSheetLock.setOnClickListener {
|
binding.bottomSheetLock.setOnClickListener {
|
||||||
if (appInfo.lock) {
|
if (appInfo.lock) {
|
||||||
fingerHelper.startFingerprintAuth(appInfo, this)
|
fingerHelper.startBiometricAuth(appInfo, this)
|
||||||
} else {
|
} else {
|
||||||
appInfo.lock = true
|
appInfo.lock = true
|
||||||
viewModel.updateAppLock(appInfo, appInfo.lock)
|
viewModel.updateAppLock(appInfo, appInfo.lock)
|
||||||
|
|||||||
@@ -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.data.entities.AppInfo
|
||||||
import com.github.droidworksstudio.launcher.databinding.FragmentDrawBinding
|
import com.github.droidworksstudio.launcher.databinding.FragmentDrawBinding
|
||||||
import com.github.droidworksstudio.launcher.helper.AppHelper
|
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.PreferenceHelper
|
||||||
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
|
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
|
||||||
import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener
|
import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener
|
||||||
@@ -48,7 +48,7 @@ class DrawFragment : Fragment(),
|
|||||||
OnItemClickedListener.OnAppLongClickedListener,
|
OnItemClickedListener.OnAppLongClickedListener,
|
||||||
OnItemClickedListener.BottomSheetDismissListener,
|
OnItemClickedListener.BottomSheetDismissListener,
|
||||||
OnItemClickedListener.OnAppStateClickListener,
|
OnItemClickedListener.OnAppStateClickListener,
|
||||||
FingerprintHelper.Callback, ScrollEventListener {
|
BiometricHelper.Callback, ScrollEventListener {
|
||||||
private var _binding: FragmentDrawBinding? = null
|
private var _binding: FragmentDrawBinding? = null
|
||||||
|
|
||||||
private val binding get() = _binding!!
|
private val binding get() = _binding!!
|
||||||
@@ -60,7 +60,7 @@ class DrawFragment : Fragment(),
|
|||||||
lateinit var appHelper: AppHelper
|
lateinit var appHelper: AppHelper
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var fingerHelper: FingerprintHelper
|
lateinit var fingerHelper: BiometricHelper
|
||||||
|
|
||||||
private val viewModel: AppViewModel by viewModels()
|
private val viewModel: AppViewModel by viewModels()
|
||||||
|
|
||||||
@@ -274,7 +274,7 @@ class DrawFragment : Fragment(),
|
|||||||
if (!appInfo.lock) {
|
if (!appInfo.lock) {
|
||||||
context.launchApp(appInfo)
|
context.launchApp(appInfo)
|
||||||
} else {
|
} else {
|
||||||
fingerHelper.startFingerprintAuth(appInfo, this)
|
fingerHelper.startBiometricAuth(appInfo, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.data.entities.AppInfo
|
||||||
import com.github.droidworksstudio.launcher.databinding.FragmentFavoriteBinding
|
import com.github.droidworksstudio.launcher.databinding.FragmentFavoriteBinding
|
||||||
import com.github.droidworksstudio.launcher.helper.AppHelper
|
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.PreferenceHelper
|
||||||
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
|
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
|
||||||
import com.github.droidworksstudio.launcher.listener.OnItemMoveListener
|
import com.github.droidworksstudio.launcher.listener.OnItemMoveListener
|
||||||
@@ -41,7 +41,7 @@ class FavoriteFragment : Fragment(),
|
|||||||
OnItemClickedListener.BottomSheetDismissListener,
|
OnItemClickedListener.BottomSheetDismissListener,
|
||||||
OnItemClickedListener.OnAppStateClickListener,
|
OnItemClickedListener.OnAppStateClickListener,
|
||||||
OnItemMoveListener.OnItemActionListener,
|
OnItemMoveListener.OnItemActionListener,
|
||||||
FingerprintHelper.Callback {
|
BiometricHelper.Callback {
|
||||||
private var _binding: FragmentFavoriteBinding? = null
|
private var _binding: FragmentFavoriteBinding? = null
|
||||||
|
|
||||||
private val binding get() = _binding!!
|
private val binding get() = _binding!!
|
||||||
@@ -54,7 +54,7 @@ class FavoriteFragment : Fragment(),
|
|||||||
lateinit var preferenceHelper: PreferenceHelper
|
lateinit var preferenceHelper: PreferenceHelper
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var fingerHelper: FingerprintHelper
|
lateinit var fingerHelper: BiometricHelper
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var appHelper: AppHelper
|
lateinit var appHelper: AppHelper
|
||||||
@@ -204,7 +204,7 @@ class FavoriteFragment : Fragment(),
|
|||||||
if (!appInfo.lock) {
|
if (!appInfo.lock) {
|
||||||
context.launchApp(appInfo)
|
context.launchApp(appInfo)
|
||||||
} else {
|
} else {
|
||||||
fingerHelper.startFingerprintAuth(appInfo, this)
|
fingerHelper.startBiometricAuth(appInfo, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.data.entities.AppInfo
|
||||||
import com.github.droidworksstudio.launcher.databinding.FragmentHiddenBinding
|
import com.github.droidworksstudio.launcher.databinding.FragmentHiddenBinding
|
||||||
import com.github.droidworksstudio.launcher.helper.AppHelper
|
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.PreferenceHelper
|
||||||
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
|
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
|
||||||
import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener
|
import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener
|
||||||
@@ -35,7 +35,7 @@ class HiddenFragment : Fragment(),
|
|||||||
OnItemClickedListener.OnAppLongClickedListener,
|
OnItemClickedListener.OnAppLongClickedListener,
|
||||||
OnItemClickedListener.BottomSheetDismissListener,
|
OnItemClickedListener.BottomSheetDismissListener,
|
||||||
OnItemClickedListener.OnAppStateClickListener,
|
OnItemClickedListener.OnAppStateClickListener,
|
||||||
FingerprintHelper.Callback {
|
BiometricHelper.Callback {
|
||||||
private var _binding: FragmentHiddenBinding? = null
|
private var _binding: FragmentHiddenBinding? = null
|
||||||
|
|
||||||
private val binding get() = _binding!!
|
private val binding get() = _binding!!
|
||||||
@@ -45,7 +45,7 @@ class HiddenFragment : Fragment(),
|
|||||||
private lateinit var context: Context
|
private lateinit var context: Context
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var fingerHelper: FingerprintHelper
|
lateinit var fingerHelper: BiometricHelper
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var appHelper: AppHelper
|
lateinit var appHelper: AppHelper
|
||||||
@@ -121,7 +121,7 @@ class HiddenFragment : Fragment(),
|
|||||||
if (!appInfo.lock) {
|
if (!appInfo.lock) {
|
||||||
context.launchApp(appInfo)
|
context.launchApp(appInfo)
|
||||||
} else {
|
} else {
|
||||||
fingerHelper.startFingerprintAuth(appInfo, this)
|
fingerHelper.startBiometricAuth(appInfo, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.data.entities.AppInfo
|
||||||
import com.github.droidworksstudio.launcher.databinding.FragmentHomeBinding
|
import com.github.droidworksstudio.launcher.databinding.FragmentHomeBinding
|
||||||
import com.github.droidworksstudio.launcher.helper.AppHelper
|
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.PreferenceHelper
|
||||||
import com.github.droidworksstudio.launcher.helper.UpdateManagerHelper
|
import com.github.droidworksstudio.launcher.helper.UpdateManagerHelper
|
||||||
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
|
import com.github.droidworksstudio.launcher.listener.OnItemClickedListener
|
||||||
@@ -62,7 +62,7 @@ class HomeFragment : Fragment(),
|
|||||||
OnItemClickedListener.OnAppLongClickedListener,
|
OnItemClickedListener.OnAppLongClickedListener,
|
||||||
OnItemClickedListener.BottomSheetDismissListener,
|
OnItemClickedListener.BottomSheetDismissListener,
|
||||||
OnItemClickedListener.OnAppStateClickListener,
|
OnItemClickedListener.OnAppStateClickListener,
|
||||||
FingerprintHelper.Callback, ScrollEventListener {
|
BiometricHelper.Callback, ScrollEventListener {
|
||||||
|
|
||||||
private var _binding: FragmentHomeBinding? = null
|
private var _binding: FragmentHomeBinding? = null
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ class HomeFragment : Fragment(),
|
|||||||
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var fingerHelper: FingerprintHelper
|
lateinit var fingerHelper: BiometricHelper
|
||||||
|
|
||||||
private val viewModel: AppViewModel by viewModels()
|
private val viewModel: AppViewModel by viewModels()
|
||||||
private val preferenceViewModel: PreferenceViewModel by viewModels()
|
private val preferenceViewModel: PreferenceViewModel by viewModels()
|
||||||
@@ -283,7 +283,7 @@ class HomeFragment : Fragment(),
|
|||||||
if (!appInfo.lock)
|
if (!appInfo.lock)
|
||||||
context.launchApp(appInfo)
|
context.launchApp(appInfo)
|
||||||
else
|
else
|
||||||
fingerHelper.startFingerprintAuth(appInfo, this)
|
fingerHelper.startBiometricAuth(appInfo, this)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showSelectedApp(appInfo: AppInfo) {
|
private fun showSelectedApp(appInfo: AppInfo) {
|
||||||
@@ -455,7 +455,7 @@ class HomeFragment : Fragment(),
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (preferenceHelper.settingsLock) {
|
if (preferenceHelper.settingsLock) {
|
||||||
fingerHelper.startFingerprintSettingsAuth(R.id.action_HomeFragment_to_SettingsFragment)
|
fingerHelper.startBiometricSettingsAuth(R.id.action_HomeFragment_to_SettingsFragment)
|
||||||
} else {
|
} else {
|
||||||
val actionTypeNavOptions: NavOptions =
|
val actionTypeNavOptions: NavOptions =
|
||||||
appHelper.getActionType(Constants.Swipe.DoubleTap)
|
appHelper.getActionType(Constants.Swipe.DoubleTap)
|
||||||
|
|||||||
Reference in New Issue
Block a user