|
|
@@ -2,6 +2,7 @@ package com.iscs.bozzys.ui.pages.login
|
|
|
|
|
|
import android.content.Context
|
|
|
import android.content.Intent
|
|
|
+import androidx.biometric.BiometricPrompt
|
|
|
import androidx.compose.foundation.background
|
|
|
import androidx.compose.foundation.border
|
|
|
import androidx.compose.foundation.clickable
|
|
|
@@ -35,6 +36,7 @@ import androidx.compose.ui.Modifier
|
|
|
import androidx.compose.ui.draw.clip
|
|
|
import androidx.compose.ui.graphics.Color
|
|
|
import androidx.compose.ui.graphics.SolidColor
|
|
|
+import androidx.compose.ui.platform.LocalContext
|
|
|
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
|
|
|
import androidx.compose.ui.platform.SoftwareKeyboardController
|
|
|
import androidx.compose.ui.res.painterResource
|
|
|
@@ -52,6 +54,8 @@ import com.iscs.bozzys.ui.pages.vm.VMLogin
|
|
|
import com.iscs.bozzys.ui.theme.Main
|
|
|
import com.iscs.bozzys.ui.theme.Text
|
|
|
import com.iscs.bozzys.ui.theme.TextDesc
|
|
|
+import com.iscs.bozzys.utils.SystemUtil.isBiometricCanUse
|
|
|
+import com.iscs.bozzys.utils.SystemUtil.showFingerAuth
|
|
|
|
|
|
/**
|
|
|
* 打开登录页面
|
|
|
@@ -115,7 +119,10 @@ class PageLogin : PageBase() {
|
|
|
|
|
|
@Composable
|
|
|
fun LoginCompose(kb: SoftwareKeyboardController?, vm: VMLogin = viewModel()) {
|
|
|
+ val ctx = LocalContext.current
|
|
|
val state = vm.state
|
|
|
+ // 指纹登录是否可用
|
|
|
+ val finger = ctx.isBiometricCanUse()
|
|
|
LaunchedEffect(Unit) {
|
|
|
// 处理基础Toast和Loading提示
|
|
|
vm.toast.showToast()
|
|
|
@@ -270,54 +277,57 @@ class PageLogin : PageBase() {
|
|
|
Text("工业安全系统,请妥善保管账号信息", Modifier.padding(start = 5.dp), fontSize = 12.sp, color = Color(0xFF6B7280))
|
|
|
}
|
|
|
// 其他登录方式
|
|
|
-// Box(Modifier.padding(top = 20.dp), contentAlignment = Alignment.Center) {
|
|
|
-// Spacer(
|
|
|
-// Modifier
|
|
|
-// .size(335.dp, 1.dp)
|
|
|
-// .background(Color(0xFFEEEEEE))
|
|
|
-// )
|
|
|
-// Text(
|
|
|
-// "其他登录方式", Modifier
|
|
|
-// .background(Color.White)
|
|
|
-// .padding(horizontal = 5.dp),
|
|
|
-// fontSize = 14.sp, color = Color(0xFF999999)
|
|
|
-// )
|
|
|
-// }
|
|
|
-// Row(Modifier.padding(top = 30.dp, bottom = 10.dp), verticalAlignment = Alignment.CenterVertically) {
|
|
|
-// Icon(
|
|
|
-// painter = painterResource(R.drawable.fingerprint),
|
|
|
-// contentDescription = null,
|
|
|
-// Modifier
|
|
|
-// .padding(horizontal = 10.dp)
|
|
|
-// .size(50.dp)
|
|
|
-// .clip(RoundedCornerShape(50))
|
|
|
-// .background(Color(0xFFF5F5F5))
|
|
|
-// .padding(13.dp),
|
|
|
-// tint = Color(0xFF6B7280)
|
|
|
-// )
|
|
|
-// Icon(
|
|
|
-// painter = painterResource(R.drawable.qrcode),
|
|
|
-// contentDescription = null,
|
|
|
-// Modifier
|
|
|
-// .padding(horizontal = 10.dp)
|
|
|
-// .size(50.dp)
|
|
|
-// .clip(RoundedCornerShape(50))
|
|
|
-// .background(Color(0xFFF5F5F5))
|
|
|
-// .padding(13.dp),
|
|
|
-// tint = Color(0xFF6B7280)
|
|
|
-// )
|
|
|
-// Icon(
|
|
|
-// painter = painterResource(R.drawable.bluetooth),
|
|
|
-// contentDescription = null,
|
|
|
-// Modifier
|
|
|
-// .padding(horizontal = 10.dp)
|
|
|
-// .size(50.dp)
|
|
|
-// .clip(RoundedCornerShape(50))
|
|
|
-// .background(Color(0xFFF5F5F5))
|
|
|
-// .padding(15.dp),
|
|
|
-// tint = Color(0xFF6B7280)
|
|
|
-// )
|
|
|
-// }
|
|
|
+ if (finger) Box(Modifier.padding(top = 20.dp), contentAlignment = Alignment.Center) {
|
|
|
+ Spacer(
|
|
|
+ Modifier
|
|
|
+ .size(335.dp, 1.dp)
|
|
|
+ .background(Color(0xFFEEEEEE))
|
|
|
+ )
|
|
|
+ Text(
|
|
|
+ "其他登录方式", Modifier
|
|
|
+ .background(Color.White)
|
|
|
+ .padding(horizontal = 5.dp),
|
|
|
+ fontSize = 14.sp, color = Color(0xFF999999)
|
|
|
+ )
|
|
|
+ }
|
|
|
+ Row(Modifier.padding(top = 30.dp, bottom = 10.dp), verticalAlignment = Alignment.CenterVertically) {
|
|
|
+ if (finger) Icon(
|
|
|
+ painter = painterResource(R.drawable.fingerprint),
|
|
|
+ contentDescription = null,
|
|
|
+ Modifier
|
|
|
+ .padding(horizontal = 10.dp)
|
|
|
+ .size(50.dp)
|
|
|
+ .clip(RoundedCornerShape(50))
|
|
|
+ .clickable {
|
|
|
+ // BiometricPrompt
|
|
|
+ }
|
|
|
+ .background(Color(0xFFF5F5F5))
|
|
|
+ .padding(13.dp),
|
|
|
+ tint = Color(0xFF6B7280)
|
|
|
+ )
|
|
|
+ Icon(
|
|
|
+ painter = painterResource(R.drawable.qrcode),
|
|
|
+ contentDescription = null,
|
|
|
+ Modifier
|
|
|
+ .padding(horizontal = 10.dp)
|
|
|
+ .size(50.dp)
|
|
|
+ .clip(RoundedCornerShape(50))
|
|
|
+ .background(Color(0xFFF5F5F5))
|
|
|
+ .padding(13.dp),
|
|
|
+ tint = Color(0xFF6B7280)
|
|
|
+ )
|
|
|
+ Icon(
|
|
|
+ painter = painterResource(R.drawable.bluetooth),
|
|
|
+ contentDescription = null,
|
|
|
+ Modifier
|
|
|
+ .padding(horizontal = 10.dp)
|
|
|
+ .size(50.dp)
|
|
|
+ .clip(RoundedCornerShape(50))
|
|
|
+ .background(Color(0xFFF5F5F5))
|
|
|
+ .padding(15.dp),
|
|
|
+ tint = Color(0xFF6B7280)
|
|
|
+ )
|
|
|
+ }
|
|
|
Spacer(Modifier.weight(2f))
|
|
|
// 底部版本等提示
|
|
|
Column(Modifier.width(335.dp), horizontalAlignment = Alignment.CenterHorizontally) {
|