mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 19:15:58 +00:00
add a switch in Settings to enable or disable auth
This commit is contained in:
@@ -101,6 +101,8 @@ fun Auth(activity: FragmentActivity, callback: AuthenticationCallback, promptInf
|
|||||||
Button(
|
Button(
|
||||||
onClick = {
|
onClick = {
|
||||||
val bioManager = BiometricManager.from(context)
|
val bioManager = BiometricManager.from(context)
|
||||||
|
val sharedPref = context.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||||
|
if(sharedPref.getBoolean("bio_auth", false)){
|
||||||
when(BiometricManager.BIOMETRIC_SUCCESS){
|
when(BiometricManager.BIOMETRIC_SUCCESS){
|
||||||
bioManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG) ->
|
bioManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG) ->
|
||||||
promptInfo
|
promptInfo
|
||||||
@@ -112,6 +114,9 @@ fun Auth(activity: FragmentActivity, callback: AuthenticationCallback, promptInf
|
|||||||
.setNegativeButtonText("Use password")
|
.setNegativeButtonText("Use password")
|
||||||
else -> promptInfo.setAllowedAuthenticators(BiometricManager.Authenticators.DEVICE_CREDENTIAL)
|
else -> promptInfo.setAllowedAuthenticators(BiometricManager.Authenticators.DEVICE_CREDENTIAL)
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
promptInfo.setAllowedAuthenticators(BiometricManager.Authenticators.DEVICE_CREDENTIAL)
|
||||||
|
}
|
||||||
authWithBiometricPrompt(activity, promptInfo.build(), callback)
|
authWithBiometricPrompt(activity, promptInfo.build(), callback)
|
||||||
}
|
}
|
||||||
){
|
){
|
||||||
|
|||||||
@@ -60,9 +60,14 @@ class MainActivity : FragmentActivity() {
|
|||||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.base)
|
setContentView(R.layout.base)
|
||||||
|
val sharedPref = applicationContext.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||||
val fragmentManager = supportFragmentManager
|
val fragmentManager = supportFragmentManager
|
||||||
val transaction = fragmentManager.beginTransaction()
|
val transaction = fragmentManager.beginTransaction()
|
||||||
|
if(sharedPref.getBoolean("auth", false)){
|
||||||
transaction.add(R.id.base, AuthFragment(), "auth")
|
transaction.add(R.id.base, AuthFragment(), "auth")
|
||||||
|
}else{
|
||||||
|
transaction.add(R.id.base, homeFragment, "home")
|
||||||
|
}
|
||||||
transaction.commit()
|
transaction.commit()
|
||||||
val locale = applicationContext.resources?.configuration?.locale
|
val locale = applicationContext.resources?.configuration?.locale
|
||||||
zhCN = locale==Locale.SIMPLIFIED_CHINESE||locale==Locale.CHINESE||locale==Locale.CHINA
|
zhCN = locale==Locale.SIMPLIFIED_CHINESE||locale==Locale.CHINESE||locale==Locale.CHINA
|
||||||
|
|||||||
@@ -14,9 +14,7 @@ import androidx.compose.foundation.verticalScroll
|
|||||||
import androidx.compose.material3.MaterialTheme.typography
|
import androidx.compose.material3.MaterialTheme.typography
|
||||||
import androidx.compose.material3.Scaffold
|
import androidx.compose.material3.Scaffold
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.*
|
||||||
import androidx.compose.runtime.MutableState
|
|
||||||
import androidx.compose.runtime.getValue
|
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
@@ -57,7 +55,8 @@ fun AppSetting(navCtrl:NavHostController, materialYou: MutableState<Boolean>, bl
|
|||||||
modifier = Modifier.padding(top = it.calculateTopPadding())
|
modifier = Modifier.padding(top = it.calculateTopPadding())
|
||||||
){
|
){
|
||||||
composable(route = "Home"){ Home(localNavCtrl) }
|
composable(route = "Home"){ Home(localNavCtrl) }
|
||||||
composable(route = "Settings"){Settings(materialYou, blackTheme)}
|
composable(route = "Theme"){ ThemeSettings(materialYou, blackTheme) }
|
||||||
|
composable(route = "Auth"){ AuthSettings() }
|
||||||
composable(route = "About"){ About() }
|
composable(route = "About"){ About() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -66,13 +65,14 @@ fun AppSetting(navCtrl:NavHostController, materialYou: MutableState<Boolean>, bl
|
|||||||
@Composable
|
@Composable
|
||||||
private fun Home(navCtrl: NavHostController){
|
private fun Home(navCtrl: NavHostController){
|
||||||
Column(modifier = Modifier.fillMaxSize()){
|
Column(modifier = Modifier.fillMaxSize()){
|
||||||
SubPageItem(R.string.setting,"",R.drawable.settings_fill0){navCtrl.navigate("Settings")}
|
SubPageItem(R.string.setting,"",R.drawable.settings_fill0){navCtrl.navigate("Theme")}
|
||||||
|
SubPageItem(R.string.security,"",R.drawable.settings_fill0){navCtrl.navigate("Auth")}
|
||||||
SubPageItem(R.string.about,"",R.drawable.info_fill0){navCtrl.navigate("About")}
|
SubPageItem(R.string.about,"",R.drawable.info_fill0){navCtrl.navigate("About")}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun Settings(materialYou:MutableState<Boolean>, blackTheme:MutableState<Boolean>){
|
private fun ThemeSettings(materialYou:MutableState<Boolean>, blackTheme:MutableState<Boolean>){
|
||||||
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())) {
|
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())) {
|
||||||
if(VERSION.SDK_INT>=31){
|
if(VERSION.SDK_INT>=31){
|
||||||
@@ -98,6 +98,31 @@ private fun Settings(materialYou:MutableState<Boolean>, blackTheme:MutableState<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun AuthSettings(){
|
||||||
|
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||||
|
var auth by remember{ mutableStateOf(sharedPref.getBoolean("auth",false)) }
|
||||||
|
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())) {
|
||||||
|
if(VERSION.SDK_INT>=30){
|
||||||
|
SwitchItem(
|
||||||
|
R.string.lock_owndroid, "", null,
|
||||||
|
{ auth },
|
||||||
|
{
|
||||||
|
sharedPref.edit().putBoolean("auth",it).apply()
|
||||||
|
auth = sharedPref.getBoolean("auth",false)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if(auth){
|
||||||
|
SwitchItem(
|
||||||
|
R.string.enable_bio_auth, "", null,
|
||||||
|
{ sharedPref.getBoolean("bio_auth",false) },
|
||||||
|
{ sharedPref.edit().putBoolean("bio_auth",it).apply() }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun About(){
|
private fun About(){
|
||||||
val myContext = LocalContext.current
|
val myContext = LocalContext.current
|
||||||
|
|||||||
@@ -480,6 +480,9 @@
|
|||||||
<string name="source_code">源代码</string>
|
<string name="source_code">源代码</string>
|
||||||
<string name="amoled_black">纯黑夜间主题</string>
|
<string name="amoled_black">纯黑夜间主题</string>
|
||||||
<string name="blackTheme_desc">需要打开夜间模式</string>
|
<string name="blackTheme_desc">需要打开夜间模式</string>
|
||||||
|
<string name="security">安全</string>
|
||||||
|
<string name="lock_owndroid">锁定OwnDroid</string>
|
||||||
|
<string name="enable_bio_auth">使用生物识别</string>
|
||||||
|
|
||||||
<!--AndroidPermission-->
|
<!--AndroidPermission-->
|
||||||
<string name="permission_READ_EXTERNAL_STORAGE">读取外部存储</string>
|
<string name="permission_READ_EXTERNAL_STORAGE">读取外部存储</string>
|
||||||
|
|||||||
@@ -495,6 +495,9 @@
|
|||||||
<string name="source_code">Source code</string>
|
<string name="source_code">Source code</string>
|
||||||
<string name="amoled_black">Black theme</string>
|
<string name="amoled_black">Black theme</string>
|
||||||
<string name="blackTheme_desc">Require dark mode on</string>
|
<string name="blackTheme_desc">Require dark mode on</string>
|
||||||
|
<string name="security">Security</string>
|
||||||
|
<string name="lock_owndroid">Lock OwnDroid</string>
|
||||||
|
<string name="enable_bio_auth">Auth with biometrics</string>
|
||||||
|
|
||||||
<!--AndroidPermission-->
|
<!--AndroidPermission-->
|
||||||
<string name="permission_READ_EXTERNAL_STORAGE">Read external storage</string>
|
<string name="permission_READ_EXTERNAL_STORAGE">Read external storage</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user