From 1f799941619af83dd2fcca17587e793a09971733 Mon Sep 17 00:00:00 2001 From: BinTianqi <1220958406@qq.com> Date: Wed, 24 Jan 2024 15:52:27 +0800 Subject: [PATCH] adapt for wearables, change app icon --- app/build.gradle.kts | 4 +- app/src/main/AndroidManifest.xml | 1 + .../binbin/androidowner/ApplicationManage.kt | 29 ++++- .../com/binbin/androidowner/DeviceControl.kt | 51 +++++--- .../com/binbin/androidowner/MainActivity.kt | 89 ++++++++++---- .../java/com/binbin/androidowner/Password.kt | 105 ++++++++++------ .../com/binbin/androidowner/Permissions.kt | 113 ++++++++++++++---- .../java/com/binbin/androidowner/Setting.kt | 44 ++++--- .../main/java/com/binbin/androidowner/User.kt | 9 +- .../com/binbin/androidowner/UserRestrict.kt | 49 +++++--- .../res/drawable/ic_launcher_foreground.xml | 36 ++---- .../res/mipmap-anydpi-v26/ic_launcher.xml | 4 +- .../mipmap-anydpi-v26/ic_launcher_round.xml | 4 +- app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1532 bytes app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 1404 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 3217 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 2898 -> 0 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1118 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 982 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2036 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 1772 -> 0 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2169 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 1900 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 4615 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 3918 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 3320 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 2884 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 7502 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 5914 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 4776 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 3844 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 10749 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 7778 -> 0 bytes .../res/values/ic_launcher_background.xml | 4 + 34 files changed, 379 insertions(+), 163 deletions(-) create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/values/ic_launcher_background.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c420934..0070adf 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -11,8 +11,8 @@ android { applicationId = "com.binbin.androidowner" minSdk = 23 targetSdk = 34 - versionCode = 6 - versionName = "1.5" + versionCode = 7 + versionName = "2.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4d2fad8..96379e0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,6 +6,7 @@ + myDpm.setUninstallBlocked(myComponent,pkgName,b)})*/ Row( modifier = sections(), - horizontalArrangement = Arrangement.SpaceAround + horizontalArrangement = if(!sharedPref.getBoolean("isWear",false)){Arrangement.SpaceAround}else{Arrangement.SpaceBetween} ) { Button(onClick = {myDpm.setUninstallBlocked(myComponent,pkgName,false)}, enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm)) { - Text("取消防卸载") + Text("允许卸载") } Button(onClick = {myDpm.setUninstallBlocked(myComponent,pkgName,true)}, enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm)) { Text("防卸载") @@ -155,6 +156,8 @@ private fun AppManageItem( if(isDeviceOwner(myDpm)|| isProfileOwner(myDpm)){ isEnabled = getMethod() } + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) + if(!sharedPref.getBoolean("isWear",false)){ Row( modifier = sections(), horizontalArrangement = Arrangement.SpaceBetween, @@ -177,6 +180,28 @@ private fun AppManageItem( }, enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm) ) + }}else{ + Column( + modifier = sections() + ) { + Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically) { + Text( + text = stringResource(itemName) + ) + Switch( + checked = isEnabled, + onCheckedChange = { + setMethod(!isEnabled) + isEnabled = getMethod() + }, + enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm) + ) + } + if(itemDesc!=R.string.place_holder){ + Text(text = stringResource(itemDesc), + style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) + } + } } } diff --git a/app/src/main/java/com/binbin/androidowner/DeviceControl.kt b/app/src/main/java/com/binbin/androidowner/DeviceControl.kt index d6024b9..59e218f 100644 --- a/app/src/main/java/com/binbin/androidowner/DeviceControl.kt +++ b/app/src/main/java/com/binbin/androidowner/DeviceControl.kt @@ -2,6 +2,7 @@ package com.binbin.androidowner import android.app.admin.DevicePolicyManager import android.content.ComponentName +import android.content.Context import android.os.Build.VERSION import android.widget.Toast import androidx.activity.ComponentActivity @@ -39,6 +40,8 @@ fun DeviceControl(){ val myContext = LocalContext.current val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java) + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) + val isWear = sharedPref.getBoolean("isWear",false) Column( modifier = Modifier .verticalScroll(rememberScrollState()) @@ -70,13 +73,17 @@ fun DeviceControl(){ if(myDpm.canUsbDataSignalingBeDisabled()){ DeviceCtrlItem(R.string.usb_signal,R.string.place_holder,R.drawable.usb_fill0,myDpm,{myDpm.isUsbDataSignalingEnabled},{b -> myDpm.isUsbDataSignalingEnabled = b }) }else{ - Text("你的设备不支持关闭USB信号") + Text(text = "你的设备不支持关闭USB信号", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } } if(VERSION.SDK_INT>=28){ + Column(modifier = sections()) { + Text(text = "锁屏方式", style = MaterialTheme.typography.titleLarge) + Text(text = "禁用需要无密码") Row( - modifier = sections(), - horizontalArrangement = Arrangement.SpaceEvenly + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = if(!isWear){Arrangement.SpaceEvenly}else{Arrangement.SpaceBetween} ) { Button( onClick = { @@ -88,9 +95,9 @@ fun DeviceControl(){ }, enabled = isDeviceOwner(myDpm)|| (isProfileOwner(myDpm)&&myDpm.isAffiliatedUser) ) { - Text("禁用锁屏(需无密码)") + Text("禁用") } - Spacer(Modifier.padding(horizontal = 5.dp)) + if(!isWear){Spacer(Modifier.padding(horizontal = 5.dp))} Button( onClick = { if(myDpm.setKeyguardDisabled(myComponent,false)){ @@ -101,13 +108,13 @@ fun DeviceControl(){ }, enabled = isDeviceOwner(myDpm)|| (isProfileOwner(myDpm)&&myDpm.isAffiliatedUser) ) { - Text("启用锁屏") + Text("启用") } - } + }} } Row( - horizontalArrangement = Arrangement.SpaceAround, + horizontalArrangement = if(!isWear){Arrangement.SpaceAround}else{Arrangement.SpaceBetween}, modifier = sections(), ) { if(VERSION.SDK_INT>=24){ @@ -128,20 +135,25 @@ fun DeviceControl(){ Text(text = "WiFi MAC: $wifimac",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center) } if(VERSION.SDK_INT<24){ - Text("重启和WiFi Mac需要API24") + Text(text = "重启和WiFi Mac需要API24",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center, + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } if(VERSION.SDK_INT<26){ - Text("备份服务需要API26") + Text(text = "备份服务需要API26",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center, + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } if(VERSION.SDK_INT<30){ - Text("自动设置时间和自动设置时区需要API30") + Text(text = "自动设置时间和自动设置时区需要API30",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center, + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } - if(VERSION.SDK_INT<31){Text("关闭USB信号需API31")} + if(VERSION.SDK_INT<31){Text(text = "关闭USB信号需API31",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center, + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium})} if(VERSION.SDK_INT<34){ - Text("隐藏状态栏需要API34") + Text(text = "隐藏状态栏需要API34",modifier=Modifier.fillMaxWidth(), textAlign = TextAlign.Center, + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } Button( - onClick = {myDpm.uninstallAllUserCaCerts(myComponent)}, + onClick = {myDpm.uninstallAllUserCaCerts(myComponent);Toast.makeText(myContext, "成功", Toast.LENGTH_SHORT).show()}, modifier = Modifier.align(Alignment.CenterHorizontally), enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm) ) { @@ -159,7 +171,8 @@ fun DeviceControl(){ RadioButtonItem("WIPE_RESET_PROTECTION_DATA",{flag==0x0002},{flag=0x0002}) RadioButtonItem("WIPE_EUICC",{flag==0x0004},{flag=0x0004}) RadioButtonItem("WIPE_SILENTLY",{flag==0x0008},{flag=0x0008}) - Text("清空数据的不能是系统用户") + Text(text = "清空数据的不能是系统用户", + style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) Button( onClick = {confirmed=!confirmed}, colors = ButtonDefaults.buttonColors( @@ -210,6 +223,7 @@ private fun DeviceCtrlItem( setMethod:(b:Boolean)->Unit ){ var isEnabled by remember{ mutableStateOf(false) } + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) Row( modifier = sections(), horizontalArrangement = Arrangement.SpaceBetween, @@ -218,18 +232,19 @@ private fun DeviceCtrlItem( Row( verticalAlignment = Alignment.CenterVertically ){ + if(!sharedPref.getBoolean("isWear",false)){ Icon( painter = painterResource(leadIcon), contentDescription = null, tint = MaterialTheme.colorScheme.onPrimaryContainer, modifier = Modifier.padding(start = 5.dp, end = 9.dp) - ) + )} Column { Text( text = stringResource(itemName), - style = MaterialTheme.typography.titleLarge + style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.titleLarge}else{MaterialTheme.typography.bodyLarge} ) - if(itemDesc!=R.string.place_holder){ + if(itemDesc!=R.string.place_holder&&!sharedPref.getBoolean("isWear",false)){ Text(stringResource(itemDesc)) } } diff --git a/app/src/main/java/com/binbin/androidowner/MainActivity.kt b/app/src/main/java/com/binbin/androidowner/MainActivity.kt index 4e88e2e..73479bb 100644 --- a/app/src/main/java/com/binbin/androidowner/MainActivity.kt +++ b/app/src/main/java/com/binbin/androidowner/MainActivity.kt @@ -1,6 +1,7 @@ package com.binbin.androidowner import android.annotation.SuppressLint +import android.app.ActivityManager import android.app.admin.DevicePolicyManager import android.content.ComponentName import android.content.Context @@ -12,15 +13,19 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.ArrowBack +import androidx.compose.material.icons.outlined.Home import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton @@ -50,11 +55,11 @@ import androidx.navigation.compose.rememberNavController import com.binbin.androidowner.ui.theme.AndroidOwnerTheme import com.google.accompanist.systemuicontroller.rememberSystemUiController + @ExperimentalMaterial3Api class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { WindowCompat.setDecorFitsSystemWindows(window, false) - super.onCreate(savedInstanceState) setContent { val sysUiCtrl = rememberSystemUiController() @@ -87,8 +92,10 @@ fun MyScaffold(){ "AppSetting" to R.string.setting ) val topBarName = topBarNameMap[backStackEntry?.destination?.route]?: R.string.app_name + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) Scaffold( topBar = { + if(!sharedPref.getBoolean("isWear",false)){ TopAppBar( title = { Text( @@ -120,6 +127,26 @@ fun MyScaffold(){ } } ) + } + }, + floatingActionButton = { + if(sharedPref.getBoolean("isWear",false)&&topBarName!=R.string.app_name){ + FloatingActionButton( + onClick = { + navCtrl.navigate("HomePage") { + popUpTo( + navCtrl.graph.findStartDestination().id + ) { saveState = true } + } + focusMgr.clearFocus() + }, + modifier = Modifier.size(35.dp), + containerColor = MaterialTheme.colorScheme.tertiaryContainer, + contentColor = MaterialTheme.colorScheme.tertiary + ) { + Icon(imageVector = Icons.Outlined.Home, contentDescription = null) + } + } } ) { NavHost( @@ -136,7 +163,7 @@ fun MyScaffold(){ composable(route = "UserRestriction", content = { UserRestriction()}) composable(route = "UserManage", content = { UserManage()}) composable(route = "Password", content = { Password()}) - composable(route = "AppSetting", content = { AppSetting()}) + composable(route = "AppSetting", content = { AppSetting(navCtrl)}) } } } @@ -150,15 +177,22 @@ fun HomePage(navCtrl:NavHostController){ val isdo = myDpm.isDeviceOwnerApp("com.binbin.androidowner") val activateType = if(isDeviceOwner(myDpm)){"Device Owner"}else if(isProfileOwner(myDpm)){"Profile Owner"}else if(isda){"Device Admin"}else{""} val isActivated = if(isdo||isda){"已激活"}else{"未激活"} - Column(modifier = Modifier.verticalScroll(rememberScrollState())) { + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) + Column(modifier = Modifier.verticalScroll(rememberScrollState()), horizontalAlignment = Alignment.CenterHorizontally) { + if(sharedPref.getBoolean("isWear",false)){ + Text(text = "Android owner", style = MaterialTheme.typography.titleLarge) + } Row( modifier = Modifier .fillMaxWidth() - .padding(vertical = 5.dp, horizontal = 8.dp) + .padding(vertical = if (!sharedPref.getBoolean("isWear", false)) { 5.dp } else { 2.dp }, horizontal = if (!sharedPref.getBoolean("isWear", false)) { 8.dp } else { 4.dp }) .clip(RoundedCornerShape(15)) .background(color = MaterialTheme.colorScheme.tertiaryContainer) .clickable(onClick = { navCtrl.navigate("Permissions") }) - .padding(horizontal = 5.dp, vertical = 14.dp), + .padding( + horizontal = 5.dp, + vertical = if (!sharedPref.getBoolean("isWear", false)) { 14.dp } else { 1.dp } + ), verticalAlignment = Alignment.CenterVertically ) { Icon( @@ -168,7 +202,7 @@ fun HomePage(navCtrl:NavHostController){ painterResource(R.drawable.block_fill0) }, contentDescription = null, - modifier = Modifier.padding(horizontal = 13.dp), + modifier = Modifier.padding(horizontal = if(!sharedPref.getBoolean("isWear",false)){10.dp}else{6.dp}), tint = MaterialTheme.colorScheme.tertiary ) Column { @@ -191,25 +225,28 @@ fun HomePage(navCtrl:NavHostController){ HomePageItem(R.string.user_manage,R.drawable.account_circle_fill0,R.string.user_manage_desc,"UserManage",navCtrl) HomePageItem(R.string.password, R.drawable.password_fill0,R.string.security_desc, "Password",navCtrl) HomePageItem(R.string.setting, R.drawable.info_fill0, R.string.setting_desc, "AppSetting",navCtrl) + Spacer(Modifier.padding(vertical = 15.dp)) } } @Composable fun HomePageItem(name:Int, imgVector:Int, description:Int, navTo:String, myNav:NavHostController){ + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) Row( modifier = Modifier .fillMaxWidth() - .padding(vertical = 5.dp, horizontal = 8.dp) + .padding(vertical = if (!sharedPref.getBoolean("isWear", false)) { 5.dp } else { 2.dp }, horizontal = if (!sharedPref.getBoolean("isWear", false)) { 8.dp } else { 4.dp }) .clip(RoundedCornerShape(15)) .background(color = MaterialTheme.colorScheme.primaryContainer) .clickable(onClick = { myNav.navigate(navTo) }) .padding(6.dp), verticalAlignment = Alignment.CenterVertically + ) { Icon( painter = painterResource(imgVector), contentDescription = null, - modifier = Modifier.padding(horizontal = 10.dp), + modifier = Modifier.padding(horizontal = if(!sharedPref.getBoolean("isWear",false)){10.dp}else{6.dp}), tint = MaterialTheme.colorScheme.primary ) Column { @@ -218,10 +255,12 @@ fun HomePageItem(name:Int, imgVector:Int, description:Int, navTo:String, myNav:N style = MaterialTheme.typography.headlineSmall, color = MaterialTheme.colorScheme.onPrimaryContainer ) - Text( - text = stringResource(description), - color = MaterialTheme.colorScheme.onPrimaryContainer - ) + if(!sharedPref.getBoolean("isWear",false)){ + Text( + text = stringResource(description), + color = MaterialTheme.colorScheme.onPrimaryContainer + ) + } } } } @@ -232,13 +271,14 @@ fun RadioButtonItem( selected:()->Boolean, operation:()->Unit ){ + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) Row(verticalAlignment = Alignment.CenterVertically,modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(25)) .clickable(onClick = operation) ) { - RadioButton(selected = selected(), onClick = operation) - Text(text) + RadioButton(selected = selected(), onClick = operation,modifier=if(sharedPref.getBoolean("isWear",false)){Modifier.size(28.dp)}else{Modifier}) + Text(text = text, style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } } @@ -253,10 +293,19 @@ fun isProfileOwner(dpm:DevicePolicyManager): Boolean { @SuppressLint("ModifierFactoryExtensionFunction") @Composable fun sections(bgColor:Color=MaterialTheme.colorScheme.primaryContainer):Modifier{ - return Modifier - .fillMaxWidth() - .padding(horizontal = 8.dp, vertical = 4.dp) - .clip(RoundedCornerShape(14.dp)) - .background(color = bgColor) - .padding(vertical = 6.dp, horizontal = 10.dp) + return if(!LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE).getBoolean("isWear",false)){ + Modifier + .fillMaxWidth() + .padding(horizontal = 8.dp, vertical = 4.dp) + .clip(RoundedCornerShape(14.dp)) + .background(color = bgColor) + .padding(vertical = 6.dp, horizontal = 10.dp) + }else{ + Modifier + .fillMaxWidth() + .padding(horizontal = 3.dp, vertical = 3.dp) + .clip(RoundedCornerShape(10.dp)) + .background(color = bgColor) + .padding(vertical = 2.dp, horizontal = 3.dp) + } } diff --git a/app/src/main/java/com/binbin/androidowner/Password.kt b/app/src/main/java/com/binbin/androidowner/Password.kt index 520d857..7de22e5 100644 --- a/app/src/main/java/com/binbin/androidowner/Password.kt +++ b/app/src/main/java/com/binbin/androidowner/Password.kt @@ -7,6 +7,7 @@ import android.content.Context import android.os.Build.VERSION import android.widget.Toast import androidx.activity.ComponentActivity +import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -51,9 +52,10 @@ fun Password(){ val myContext = LocalContext.current val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java) + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) var newPwd by remember{ mutableStateOf("") } - var confirmed by remember{ mutableStateOf(false) } val focusMgr = LocalFocusManager.current + val isWear = sharedPref.getBoolean("isWear",false) Column( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier @@ -92,7 +94,7 @@ fun Password(){ modifier = sections() ) { Text(text = "密码重置令牌", style = MaterialTheme.typography.titleLarge) - Row { + Row(modifier = if(!isWear){Modifier}else{Modifier.horizontalScroll(rememberScrollState())}) { Button( onClick = { if(myDpm.clearResetPasswordToken(myComponent)){ Toast.makeText(myContext, "清除成功", Toast.LENGTH_SHORT).show() @@ -125,13 +127,23 @@ fun Password(){ Text("激活") } } + Text(text = "(可以水平滚动)") Text("没有密码时会自动激活令牌") - Text("有可能无法设置密码重置令牌,因机而异,AVD上能用") + Text("有可能无法设置密码重置令牌,因机而异") } } + if(isWear){ + Text( + text = "警告!手表不支持带字母的密码,也不支持超过4位的PIN码!如果你设置了这样的密码,你将无法解锁你的手表!", + color = MaterialTheme.colorScheme.onErrorContainer, + modifier = sections(MaterialTheme.colorScheme.errorContainer), + style = MaterialTheme.typography.bodyMedium + ) + } Column( modifier = sections() ) { + var confirmed by remember{ mutableStateOf(false) } TextField( value = newPwd, onValueChange = {newPwd=it}, @@ -141,23 +153,23 @@ fun Password(){ keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), ) Text(text = stringResource(R.string.reset_pwd_desc), modifier = Modifier.padding(vertical = 5.dp)) - var resetPwdFlag by remember{ mutableStateOf(0) } + var resetPwdFlag by remember{ mutableIntStateOf(0) } RadioButtonItem("RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT", {resetPwdFlag==DevicePolicyManager.RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT}, {resetPwdFlag=DevicePolicyManager.RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT}) RadioButtonItem("RESET_PASSWORD_REQUIRE_ENTRY",{resetPwdFlag==DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY}, {resetPwdFlag=DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY}) RadioButtonItem("无",{resetPwdFlag==0},{resetPwdFlag=0}) - Row { + Row(modifier = if(!isWear){Modifier}else{Modifier.horizontalScroll(rememberScrollState())}) { Button( onClick = { if(newPwd.length>=4||newPwd.isEmpty()){ confirmed=!confirmed - }else{ Toast.makeText(myContext, "需要4位数字或字母", Toast.LENGTH_SHORT).show() } + }else{ Toast.makeText(myContext, "需要4位密码", Toast.LENGTH_SHORT).show() } }, - modifier = Modifier.padding(end = 10.dp), + modifier = Modifier.padding(end = 5.dp), enabled = isDeviceOwner(myDpm) || isProfileOwner(myDpm) || myDpm.isAdminActive(myComponent) ) { - Text("确认密码") + Text(text = if(confirmed){"取消"}else{"确定"}) } if(VERSION.SDK_INT>=26){ Button( @@ -167,24 +179,25 @@ fun Password(){ }else{ Toast.makeText(myContext, "设置失败", Toast.LENGTH_SHORT).show() } confirmed=false }, - colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.error, contentColor = MaterialTheme.colorScheme.onError) + colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.error, contentColor = MaterialTheme.colorScheme.onError), + enabled = confirmed&&(isDeviceOwner(myDpm)||isProfileOwner(myDpm)) ) { - Text("设置密码") - } - }else{ - Button( - onClick = { - val resetSuccess = myDpm.resetPassword(newPwd,resetPwdFlag) - if(resetSuccess){ Toast.makeText(myContext, "设置成功", Toast.LENGTH_SHORT).show() - }else{ Toast.makeText(myContext, "设置失败", Toast.LENGTH_SHORT).show() } - confirmed=false - }, - enabled = confirmed, - colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.error, contentColor = MaterialTheme.colorScheme.onError) - ) { - Text("设置密码") + Text("应用") } } + Spacer(Modifier.padding(horizontal = 2.dp)) + Button( + onClick = { + val resetSuccess = myDpm.resetPassword(newPwd,resetPwdFlag) + if(resetSuccess){ Toast.makeText(myContext, "设置成功", Toast.LENGTH_SHORT).show() + }else{ Toast.makeText(myContext, "设置失败", Toast.LENGTH_SHORT).show() } + confirmed=false + }, + enabled = confirmed, + colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.error, contentColor = MaterialTheme.colorScheme.onError) + ) { + Text("应用(已弃用)") + } } } @@ -198,23 +211,26 @@ fun Password(){ if(VERSION.SDK_INT>=31){ Column(modifier = sections()) { val passwordComplexity = mapOf( - DevicePolicyManager.PASSWORD_COMPLEXITY_NONE to "无复杂度(允许不设密码)", - DevicePolicyManager.PASSWORD_COMPLEXITY_LOW to "低复杂度(允许图案和连续性)", - DevicePolicyManager.PASSWORD_COMPLEXITY_MEDIUM to "中复杂度(无连续性,至少4位)", - DevicePolicyManager.PASSWORD_COMPLEXITY_HIGH to "高复杂度(无连续性,至少6位)" + DevicePolicyManager.PASSWORD_COMPLEXITY_NONE to "无复杂度(允许不设密码)(0)", + DevicePolicyManager.PASSWORD_COMPLEXITY_LOW to "低复杂度(允许图案和连续性)(65536)", + DevicePolicyManager.PASSWORD_COMPLEXITY_MEDIUM to "中复杂度(无连续性,至少4位)(196608)", + DevicePolicyManager.PASSWORD_COMPLEXITY_HIGH to "高复杂度(无连续性,至少6位)(327680)" ).toList() var selectedItem by remember{ mutableIntStateOf(passwordComplexity[0].first) } if(isDeviceOwner(myDpm) || isProfileOwner(myDpm)){ selectedItem=myDpm.requiredPasswordComplexity } Text(text = "密码复杂度要求", style = MaterialTheme.typography.titleLarge) - Text(text = "不是实际密码复杂度") - Text(text = "设置密码复杂度将会取代密码质量") + Text(text = "不是实际密码复杂度", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) + Text(text = "设置密码复杂度将会取代密码质量", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) RadioButtonItem(passwordComplexity[0].second,{selectedItem==passwordComplexity[0].first},{selectedItem=passwordComplexity[0].first}) RadioButtonItem(passwordComplexity[1].second,{selectedItem==passwordComplexity[1].first},{selectedItem=passwordComplexity[1].first}) RadioButtonItem(passwordComplexity[2].second,{selectedItem==passwordComplexity[2].first},{selectedItem=passwordComplexity[2].first}) RadioButtonItem(passwordComplexity[3].second,{selectedItem==passwordComplexity[3].first},{selectedItem=passwordComplexity[3].first}) - Text(text = "连续性:密码重复(6666)或密码递增递减(4321、2468)", modifier = Modifier.padding(vertical = 3.dp)) + Text(text = "连续性:密码重复(6666)或密码递增递减(4321、2468)", modifier = Modifier.padding(vertical = 3.dp), + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) Button( onClick = { myDpm.requiredPasswordComplexity = selectedItem @@ -245,9 +261,11 @@ fun Password(){ selectedItem=myDpm.getPasswordQuality(myComponent) } Text(text = "密码质量要求", style = MaterialTheme.typography.titleLarge) - Text(text = "不是实际密码质量") + Text(text = "不是实际密码质量", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) if(VERSION.SDK_INT>=31){ - Text(text = "已弃用,请使用上面的”密码复杂度要求“", color = MaterialTheme.colorScheme.error) + Text(text = "已弃用,请使用上面的”密码复杂度要求“", color = MaterialTheme.colorScheme.error, + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } RadioButtonItem(passwordQuality[0].second,{selectedItem==passwordQuality[0].first},{selectedItem=passwordQuality[0].first}) RadioButtonItem(passwordQuality[1].second,{selectedItem==passwordQuality[1].first},{selectedItem=passwordQuality[1].first}) @@ -257,7 +275,8 @@ fun Password(){ RadioButtonItem(passwordQuality[5].second,{selectedItem==passwordQuality[5].first},{selectedItem=passwordQuality[5].first}) RadioButtonItem(passwordQuality[6].second,{selectedItem==passwordQuality[6].first},{selectedItem=passwordQuality[6].first}) RadioButtonItem(passwordQuality[7].second,{selectedItem==passwordQuality[7].first},{selectedItem=passwordQuality[7].first}) - Text(text = "连续性:密码重复(6666)或密码递增递减(4321、2468)", modifier = Modifier.padding(vertical = 3.dp)) + Text(text = "连续性:密码重复(6666)或密码递增递减(4321、2468)", modifier = Modifier.padding(vertical = 3.dp), + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) Button( onClick = { myDpm.setPasswordQuality(myComponent,selectedItem) @@ -288,14 +307,22 @@ fun PasswordItem( var inputContent by remember{ mutableStateOf(if(isDeviceOwner(myDpm)){getMethod()}else{""}) } var inputContentEdited by remember{ mutableStateOf(false) } var ableToApply by remember{ mutableStateOf(true) } + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) Text(text = stringResource(itemName), style = MaterialTheme.typography.titleLarge) - Text(text= stringResource(itemDesc),modifier=Modifier.padding(vertical = 2.dp)) + Text(text= stringResource(itemDesc),modifier=Modifier.padding(vertical = 2.dp), + style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier .fillMaxWidth() - .padding(end = 8.dp) + .padding( + end = if (!sharedPref.getBoolean("isWear", false)) { + 8.dp + } else { + 0.dp + } + ) ){ TextField( value = inputContent, @@ -313,6 +340,7 @@ fun PasswordItem( keyboardActions = KeyboardActions(onDone = {focusMgr.clearFocus()}), enabled = isDeviceOwner(myDpm) ) + if(!sharedPref.getBoolean("isWear",false)){ IconButton( onClick = { focusMgr.clearFocus() ; setMethod(inputContent) ; inputContentEdited=inputContent!=getMethod() }, enabled = isDeviceOwner(myDpm)&&ableToApply, @@ -324,6 +352,13 @@ fun PasswordItem( ) ) { Icon(imageVector = Icons.Outlined.Check, contentDescription = null) + }} + } + if(sharedPref.getBoolean("isWear",false)&&isDeviceOwner(myDpm)&&ableToApply){ + Button( + onClick = {focusMgr.clearFocus() ; setMethod(inputContent) ; inputContentEdited=inputContent!=getMethod()} + ) { + Text("应用") } } } diff --git a/app/src/main/java/com/binbin/androidowner/Permissions.kt b/app/src/main/java/com/binbin/androidowner/Permissions.kt index 6d8fe57..2013a36 100644 --- a/app/src/main/java/com/binbin/androidowner/Permissions.kt +++ b/app/src/main/java/com/binbin/androidowner/Permissions.kt @@ -19,6 +19,7 @@ import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TextField @@ -35,6 +36,7 @@ import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import androidx.core.content.ContextCompat.startActivity import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.NavHostController @@ -42,25 +44,34 @@ import androidx.navigation.NavHostController @Composable fun DpmPermissions(navCtrl:NavHostController){ - //da:DeviceAdmin do:DeviceOwner val myContext = LocalContext.current val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java) val isda = myDpm.isAdminActive(myComponent) val focusManager = LocalFocusManager.current + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) + val isWear = sharedPref.getBoolean("isWear",false) Column( modifier = Modifier.verticalScroll(rememberScrollState()), horizontalAlignment = Alignment.CenterHorizontally ) { + if(!myDpm.isAdminActive(myComponent)&&isWear){ + Button(onClick = { activateDeviceAdmin(myContext,myComponent) },modifier = Modifier + .padding(horizontal = 3.dp) + .fillMaxWidth()) { + Text("激活Device admin") + } + } Row( modifier = sections(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { Column { - Text(text = "Device Admin", style = MaterialTheme.typography.titleLarge) + Text(text = "Device Admin", fontSize = if(!isWear){22.sp}else{20.sp}) Text(if(isda){"已激活"}else{"未激活"}) } + if(!isWear) if(isda){ Button( onClick = { @@ -85,12 +96,13 @@ fun DpmPermissions(navCtrl:NavHostController){ modifier = sections(MaterialTheme.colorScheme.tertiaryContainer), horizontalAlignment = Alignment.Start ) { - Text("你可以在adb shell中使用以下命令激活Device Admin") SelectionContainer { - Text("dpm set-active-admin com.binbin.androidowner/com.binbin.androidowner.MyDeviceAdminReceiver", - color = MaterialTheme.colorScheme.onTertiaryContainer) + Text("adb shell dpm set-active-admin com.binbin.androidowner/com.binbin.androidowner.MyDeviceAdminReceiver", + color = MaterialTheme.colorScheme.onTertiaryContainer, + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } - Text("或者进入设置 -> 安全 -> 更多安全设置 -> 设备管理应用 -> Android Owner") + Text(text = "或者进入设置(原生安卓) -> 安全 -> 更多安全设置 -> 设备管理应用 -> Android Owner", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } } Row( @@ -99,10 +111,10 @@ fun DpmPermissions(navCtrl:NavHostController){ verticalAlignment = Alignment.CenterVertically ) { Column { - Text(text = "Profile Owner", style = MaterialTheme.typography.titleLarge) + Text(text = "Profile Owner", fontSize = if(!isWear){22.sp}else{20.sp}) Text(if(isProfileOwner(myDpm)){"已激活"}else{"未激活"}) } - if(isProfileOwner(myDpm)&&VERSION.SDK_INT>=24){ + if(isProfileOwner(myDpm)&&VERSION.SDK_INT>=24&&!isWear){ Button( onClick = { myDpm.clearProfileOwner(myComponent) @@ -123,15 +135,17 @@ fun DpmPermissions(navCtrl:NavHostController){ horizontalAlignment = Alignment.Start ) { if(!isDeviceOwner(myDpm)){ - Text("你可以在adb shell中使用以下命令激活Profile Owner") SelectionContainer { - Text("dpm set-profile-owner com.binbin.androidowner/com.binbin.androidowner.MyDeviceAdminReceiver", - color = MaterialTheme.colorScheme.onTertiaryContainer) + Text("adb shell dpm set-profile-owner com.binbin.androidowner/com.binbin.androidowner.MyDeviceAdminReceiver", + color = MaterialTheme.colorScheme.onTertiaryContainer, + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } - Text("一个设备只能有一个Device owner,强烈建议激活Device owner") + Text(text = "Device owner和Profile owner不能同时存在,强烈建议激活Device owner", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } if(isDeviceOwner(myDpm)){ - Text("Device owner创建其他用户后,这个应用会成为新用户的Profile owner") + Text(text = "Device owner创建其他用户后,这个应用会成为新用户的Profile owner", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } } } @@ -141,10 +155,10 @@ fun DpmPermissions(navCtrl:NavHostController){ verticalAlignment = Alignment.CenterVertically ) { Column { - Text(text = "Device Owner", style = MaterialTheme.typography.titleLarge) + Text(text = "Device Owner", fontSize = if(!isWear){22.sp}else{20.sp}) Text(if(isDeviceOwner(myDpm)){"已激活"}else{"未激活"}) } - if(isDeviceOwner(myDpm)){ + if(isDeviceOwner(myDpm)&&!isWear){ Button( onClick = { myDpm.clearDeviceOwnerApp("com.binbin.androidowner") @@ -164,13 +178,14 @@ fun DpmPermissions(navCtrl:NavHostController){ modifier = sections(MaterialTheme.colorScheme.tertiaryContainer), horizontalAlignment = Alignment.Start ) { - Text("你可以在adb shell中使用以下命令激活Device Owner") SelectionContainer { - Text(text = "dpm set-device-owner com.binbin.androidowner/com.binbin.androidowner.MyDeviceAdminReceiver", - color = MaterialTheme.colorScheme.onTertiaryContainer) + Text(text = "adb shell dpm set-device-owner com.binbin.androidowner/com.binbin.androidowner.MyDeviceAdminReceiver", + color = MaterialTheme.colorScheme.onTertiaryContainer, + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } if(!isda){ - Text("使用此命令也会激活Device Admin") + Text(text = "使用此命令也会激活Device Admin", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } } } @@ -178,7 +193,8 @@ fun DpmPermissions(navCtrl:NavHostController){ Text( text = "注意!在这里撤销权限不会清除配置。比如:被停用的应用会保持停用状态", color = MaterialTheme.colorScheme.onErrorContainer, - modifier = sections(MaterialTheme.colorScheme.errorContainer) + modifier = sections(MaterialTheme.colorScheme.errorContainer), + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium} ) } if(VERSION.SDK_INT>=30){ @@ -270,6 +286,54 @@ fun DpmPermissions(navCtrl:NavHostController){ DeviceOwnerInfo(R.string.long_support_msg,R.string.long_support_msg_desc,R.string.message,focusManager,myContext, {myDpm.getLongSupportMessage(myComponent)},{content -> myDpm.setLongSupportMessage(myComponent,content)}) } + if(isWear&&(myDpm.isAdminActive(myComponent)||isProfileOwner(myDpm)||isDeviceOwner(myDpm))){ + Column(modifier = sections(), horizontalAlignment = Alignment.CenterHorizontally) { + Button( + onClick = { + myDpm.removeActiveAdmin(myComponent) + navCtrl.navigate("HomePage") { + popUpTo( + navCtrl.graph.findStartDestination().id + ) { saveState = true } + } + }, + colors = ButtonDefaults.buttonColors(contentColor = MaterialTheme.colorScheme.onError, containerColor = MaterialTheme.colorScheme.error), + enabled = myDpm.isAdminActive(myComponent) + ) { + Text("撤销Device admin") + } + if(VERSION.SDK_INT>=24){ + Button( + onClick = { + myDpm.clearProfileOwner(myComponent) + navCtrl.navigate("HomePage") { + popUpTo( + navCtrl.graph.findStartDestination().id + ) { saveState = true } + } + }, + colors = ButtonDefaults.buttonColors(contentColor = MaterialTheme.colorScheme.onError, containerColor = MaterialTheme.colorScheme.error), + enabled = isProfileOwner(myDpm) + ) { + Text("撤销Profile owner") + } + } + Button( + onClick = { + myDpm.clearDeviceOwnerApp("com.binbin.androidowner") + navCtrl.navigate("HomePage") { + popUpTo( + navCtrl.graph.findStartDestination().id + ) { saveState = true } + } + }, + colors = ButtonDefaults.buttonColors(contentColor = MaterialTheme.colorScheme.onError, containerColor = MaterialTheme.colorScheme.error), + enabled = isDeviceOwner(myDpm) + ) { + Text("撤销Device owner") + } + } + } Spacer(Modifier.padding(vertical = 20.dp)) } } @@ -285,8 +349,13 @@ fun DeviceOwnerInfo( output:(content:String?)->Unit ){ Column(modifier = sections()) { - Text(text = stringResource(name), style = MaterialTheme.typography.titleLarge) - if(desc!=R.string.place_holder){Text(text = stringResource(desc),modifier = Modifier.padding(top = 6.dp))} + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) + Text(text = stringResource(name), style = MaterialTheme.typography.titleLarge, softWrap = false) + if(desc!=R.string.place_holder){ + Text( + text = stringResource(desc),modifier = Modifier.padding(top = 6.dp), + style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) + } var inputContent by remember{ mutableStateOf(input()) } TextField( value = if(inputContent!=null){ inputContent.toString() }else{""}, diff --git a/app/src/main/java/com/binbin/androidowner/Setting.kt b/app/src/main/java/com/binbin/androidowner/Setting.kt index ca92fa5..c458b71 100644 --- a/app/src/main/java/com/binbin/androidowner/Setting.kt +++ b/app/src/main/java/com/binbin/androidowner/Setting.kt @@ -5,6 +5,7 @@ import android.content.Intent import android.net.Uri import androidx.compose.foundation.background import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -15,6 +16,7 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -25,28 +27,35 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController @Composable -fun AppSetting(){ - Column( - modifier = Modifier.verticalScroll(rememberScrollState()) - ) { +fun AppSetting(navCtrl:NavHostController){ + Column(modifier = Modifier.verticalScroll(rememberScrollState())) { val myContext = LocalContext.current - Column( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 8.dp, vertical = 4.dp) - .clip(RoundedCornerShape(14.dp)) - .background(color = MaterialTheme.colorScheme.primaryContainer) - .padding(vertical = 6.dp) - ) { + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) + Column(modifier = sections()) { + Row(modifier = Modifier.fillMaxWidth().padding(horizontal = 3.dp),horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically) { + Text(text = "Wear", style = MaterialTheme.typography.titleLarge) + Switch( + checked = sharedPref.getBoolean("isWear",false), + onCheckedChange = { + sharedPref.edit().putBoolean("isWear",!sharedPref.getBoolean("isWear",false)).apply() + navCtrl.navigate("HomePage") + } + ) + } + } + Column(modifier = sections()) { Column( modifier = Modifier.padding(start = 8.dp, end = 8.dp, bottom = 12.dp) ) { Text(text = "Android owner", style = MaterialTheme.typography.headlineMedium, color = MaterialTheme.colorScheme.onPrimaryContainer) - Text(text = "使用安卓的Device admin、Device owner 、Profile owner,全方位掌控你的设备") + Text(text = "使用安卓的Device admin、Device owner 、Profile owner,全方位掌控你的设备", + style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) Spacer(Modifier.padding(vertical = 4.dp)) - Text("这个应用只在AOSP和LineageOS上测试过,不确保每个功能都在其它系统可用,尤其是国内的魔改系统。") + Text(text = "这个应用只在AOSP和LineageOS上测试过,不确保每个功能都在其它系统可用,尤其是国内的魔改系统。", + style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } Row( verticalAlignment = Alignment.CenterVertically, @@ -63,11 +72,14 @@ fun AppSetting(){ ) Column { Text(text = "源代码", fontSize = 18.sp, fontWeight = FontWeight.SemiBold) - Text(text = "https://github.com/BinTianqi/AndroidOwner", color = MaterialTheme.colorScheme.onPrimaryContainer) - Text(text = "欢迎提交issue、给小星星") + if(!sharedPref.getBoolean("isWear",false)){ + Text(text = "https://github.com/BinTianqi/AndroidOwner", color = MaterialTheme.colorScheme.onPrimaryContainer) + Text(text = "欢迎提交issue、给小星星") + } } } } + Spacer(Modifier.padding(vertical = 30.dp)) } } diff --git a/app/src/main/java/com/binbin/androidowner/User.kt b/app/src/main/java/com/binbin/androidowner/User.kt index db12029..1318109 100644 --- a/app/src/main/java/com/binbin/androidowner/User.kt +++ b/app/src/main/java/com/binbin/androidowner/User.kt @@ -9,9 +9,11 @@ import android.os.UserHandle import android.os.UserManager import android.widget.Toast import androidx.activity.ComponentActivity +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.KeyboardActions @@ -187,6 +189,7 @@ fun UserSessionMessage( ) { val focusMgr = LocalFocusManager.current var msg by remember{ mutableStateOf(if(isDeviceOwner(myDpm)||(isProfileOwner(myDpm)&&profileOwner)){ if(get()==null){""}else{get().toString()} }else{""}) } + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) Text(text = text, style = MaterialTheme.typography.titleLarge, color = MaterialTheme.colorScheme.onPrimaryContainer) TextField( value = msg, @@ -197,7 +200,7 @@ fun UserSessionMessage( modifier = Modifier.padding(vertical = 6.dp), enabled = isDeviceOwner(myDpm)||(isProfileOwner(myDpm)&&profileOwner) ) - Row { + Row(modifier = Modifier.fillMaxWidth(),horizontalArrangement = if(!sharedPref.getBoolean("isWear",false)){Arrangement.SpaceAround}else{Arrangement.SpaceBetween}) { Button( onClick = { focusMgr.clearFocus() @@ -209,7 +212,7 @@ fun UserSessionMessage( ) { Text("应用") } - Spacer(Modifier.padding(horizontal = 5.dp)) + if(!sharedPref.getBoolean("isWear",false)){Spacer(Modifier.padding(horizontal = 5.dp))} Button( onClick = { focusMgr.clearFocus() @@ -219,7 +222,7 @@ fun UserSessionMessage( }, enabled = isDeviceOwner(myDpm)||(isProfileOwner(myDpm)&&profileOwner) ) { - Text("使用默认") + Text("默认") } } } diff --git a/app/src/main/java/com/binbin/androidowner/UserRestrict.kt b/app/src/main/java/com/binbin/androidowner/UserRestrict.kt index 5d4d103..7730514 100644 --- a/app/src/main/java/com/binbin/androidowner/UserRestrict.kt +++ b/app/src/main/java/com/binbin/androidowner/UserRestrict.kt @@ -57,13 +57,21 @@ fun UserRestriction(){ var mediaVisible by remember{ mutableStateOf(false) } var userVisible by remember{ mutableStateOf(false) } var otherVisible by remember{ mutableStateOf(false) } + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) + val isWear = sharedPref.getBoolean("isWear",false) LazyColumn( horizontalAlignment = Alignment.CenterHorizontally ){ items(1){ - Text("打开开关后会禁用对应的功能") + Text(text = "打开开关后会禁用对应的功能",modifier = Modifier.padding(3.dp), + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) if(isProfileOwner(myDpm)){ - Text("Profile owner无法更改部分功能") + Text(text = "Profile owner无法更改部分功能", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) + } + if(isWear){ + Text(text = "部分功能在手表上无效", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } } @@ -111,13 +119,20 @@ fun UserRestriction(){ items(1){ Spacer(Modifier.padding(vertical = 5.dp)) - if(VERSION.SDK_INT<24){ Text("以下功能需要安卓7或以上:数据漫游、修改用户头像、更换壁纸") } - if(VERSION.SDK_INT<26){ Text("以下功能需要安卓8或以上:蓝牙、自动填充服务、添加/移除工作资料") } - if(VERSION.SDK_INT<28){ Text("以下功能需要安卓9或以上:飞行模式、位置信息、调整亮度、修改语言、修改日期时间、修改屏幕超时、打印、分享至工作应用、切换用户") } - if(VERSION.SDK_INT<29){ Text("以下功能需要安卓10或以上:配置私人DNS、内容捕获、内容建议") } - if(VERSION.SDK_INT<31){ Text("以下功能需要安卓12或以上:切换摄像头使用权限、切换麦克风使用权限") } - if(VERSION.SDK_INT<33){ Text("以下功能需要安卓13或以上:添加WiFi配置、分享设备管理器配置的WiFi、WiFi共享") } - if(VERSION.SDK_INT<34){ Text("以下功能需要安卓14或以上:2G信号、启用设备管理器、超宽频段无线电") } + if(VERSION.SDK_INT<24){ Text(text = "以下功能需要安卓7或以上:数据漫游、修改用户头像、更换壁纸", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } + if(VERSION.SDK_INT<26){ Text(text = "以下功能需要安卓8或以上:蓝牙、自动填充服务、添加/移除工作资料", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } + if(VERSION.SDK_INT<28){ Text(text = "以下功能需要安卓9或以上:飞行模式、位置信息、调整亮度、修改语言、修改日期时间、修改屏幕超时、打印、分享至工作应用、切换用户", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } + if(VERSION.SDK_INT<29){ Text(text = "以下功能需要安卓10或以上:配置私人DNS、内容捕获、内容建议", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } + if(VERSION.SDK_INT<31){ Text(text = "以下功能需要安卓12或以上:切换摄像头使用权限、切换麦克风使用权限", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } + if(VERSION.SDK_INT<33){ Text(text = "以下功能需要安卓13或以上:添加WiFi配置、分享设备管理器配置的WiFi、WiFi共享", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } + if(VERSION.SDK_INT<34){ Text(text = "以下功能需要安卓14或以上:2G信号、启用设备管理器、超宽频段无线电", + style = if(!isWear){MaterialTheme.typography.bodyLarge}else{MaterialTheme.typography.bodyMedium}) } Spacer(Modifier.padding(vertical = 30.dp)) } } @@ -125,14 +140,16 @@ fun UserRestriction(){ @Composable fun SectionTab(txt:String,getSection:()->Boolean,setSection:()->Unit){ + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) Text( text = txt, color = if(getSection()){MaterialTheme.colorScheme.onTertiaryContainer}else{MaterialTheme.colorScheme.onPrimaryContainer}, textAlign = TextAlign.Center, - style = MaterialTheme.typography.headlineMedium, + style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.headlineMedium}else{MaterialTheme.typography.titleLarge}, modifier = Modifier .fillMaxWidth() - .padding(horizontal = 8.dp, vertical = 6.dp) + .padding(horizontal = if(!sharedPref.getBoolean("isWear",false)){8.dp}else{4.dp}, + vertical = if(!sharedPref.getBoolean("isWear",false)){6.dp}else{3.dp}) .clip(RoundedCornerShape(15.dp)) .background( color = if (getSection()) { @@ -142,7 +159,7 @@ fun SectionTab(txt:String,getSection:()->Boolean,setSection:()->Unit){ } ) .clickable(onClick = setSection) - .padding(vertical = 8.dp) + .padding(vertical = if(!sharedPref.getBoolean("isWear",false)){8.dp}else{3.dp}) ) } @@ -156,6 +173,7 @@ private fun UserRestrictionItem( myDpm: DevicePolicyManager ){ var strictState by remember{ mutableStateOf(false) } + val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE) Row( modifier = sections(MaterialTheme.colorScheme.secondaryContainer), verticalAlignment = Alignment.CenterVertically, @@ -164,18 +182,19 @@ private fun UserRestrictionItem( Row( verticalAlignment = Alignment.CenterVertically ) { + if(!sharedPref.getBoolean("isWear",false)){ Icon( painter = painterResource(leadIcon), contentDescription = null, modifier = Modifier.padding(start = 4.dp, end = 8.dp), tint = MaterialTheme.colorScheme.secondary - ) + )} Column( modifier = Modifier.align(Alignment.CenterVertically) ) { Text( text = stringResource(itemName), - style = MaterialTheme.typography.titleLarge, + style = if(!sharedPref.getBoolean("isWear",false)){MaterialTheme.typography.titleLarge}else{MaterialTheme.typography.bodyLarge}, color = MaterialTheme.colorScheme.onTertiaryContainer ) if(restrictionDescription!=""){Text(text = restrictionDescription, color = MaterialTheme.colorScheme.onSecondaryContainer)} @@ -203,7 +222,7 @@ private fun UserRestrictionItem( strictState = myDpm.getUserRestrictions(myComponent).getBoolean(restriction) }, enabled = isDeviceOwner(myDpm)|| isProfileOwner(myDpm), - modifier = Modifier.padding(end = 5.dp) + modifier = Modifier.padding(end = if(!sharedPref.getBoolean("isWear",false)){5.dp}else{0.dp}) ) } } diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml index 2b068d1..b682104 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -1,30 +1,14 @@ - - - - - - - - + android:viewportWidth="24" + android:viewportHeight="24"> + - \ No newline at end of file + android:fillColor="#FFFFFFFF" + android:pathData="M12,1L3,5v6c0,5.55 3.84,10.74 9,12 5.16,-1.26 9,-6.45 9,-12L21,5l-9,-4zM12,11.99h7c-0.53,4.12 -3.28,7.79 -7,8.94L12,12L5,12L5,6.3l7,-3.11v8.8z"/> + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 6f3b755..7005cb8 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,6 +1,6 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 6f3b755..7005cb8 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,6 +1,6 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e2d28d5b24b3216cd990094d14c803f0bb522a GIT binary patch literal 1532 zcmVPX+Dx@73FG}q3OzY3Xs|KB&(Ckv?tgRS&q=3~m>nq) zkA?VxHim)d0}l_6G*iv8f}iC{fuHzd0u8i|fy_nV>FN0!YPH0m%RW9n&3rL|23m(V z=nvFti9uJ0K`neSfd*QKH>e%8T58bmd@+FrT8A@;%t3#mR*MWG%U~;COrU|*;SKr= zwOYMF;o;#>Qc?n?rKQ|w`uKam`V9&U41|b?2zc<|0nE?O!@GCyIPi0QeLdW|b&DHA z=UouiZBSfX9JIE!!mC%WjKr99WM*H*Va3ii!%DoScN$uU|6;Ap86K(A(R~d~XWoPEAe0ojZ59nsgt9 zsBchAObpc3)xoo8&$z3A7JPDY0xw>?fR>gPNKQ`X<{Ns95LgRq-n(}XVq;^OzA{nI zpp1+Rc=+%kynOi*j*pKSfk#J2FgG^`H8nMG`}S?KTzae+SbJq<1)7?gATu+QIS&cc zF{rz{o11v?>YxSf?d`$%_&B$mhlPbPxd@#j7wp;7)5FvgK^=p3cX!QB9F5x8*nqyi zJ}4+CkX*KD;Yz^XbUhK&H)v;PhnrtgQc{?4XF-crg60ew8X97bOF@fPf^LumxI=mtrk8zg~lkOZ1AXmxd!IdLV>^`saX88POrt*tS~MNr2e{A-;S ztpvKB6blOr#$0@uMjsbJ9fO*in;FqcpzDc|ot+I^TU*9l>`jjmK^=pttE&YclF5ax zCq`{;tuYUKVsCnk2`r8L-XlP)@$Ut3#qNAf>X=#ZuKnl7J z4X#|Kx9{TOB1A<+G2>*Qu0cq7c{v;&9x^6~LDw*)u&~fz9|88AE7rY-ngG zw+lNwJPdE&zBN0JOL}^GI#b^Qtji!IAt3=~XJ-ZX?RoGA9~y%%IGBEqIn&eA5Fa1U z)U^=nGYAO|4u-C-E=8*wu2!9$oe&fh#MCY7&$En6Vf_a2pb1GyNpSb>UGA51Vq)U^G=@hz2C0N@ zkOb#9NdI4rGeWmD+U(l8~y?UM!jbEQ?Ma_x=lRhQ!J-JVxk_nr0-WI?s zhnO?(=;#=Z8VT}mFDgDHd`0-q$;s)*>({S$y12Of3m)*yNF9_cd+z8)l9MphXJ|}!)XThx{6j$+Hb8v9DW^Zr*nU+Bfs0B6AA}=D) iZCgMOJ@n8+6Y(F2d!q-N(Ti#T0000e5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..afc205f4172f8d48bfdf7e633152899ecc668313 GIT binary patch literal 3217 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 DkI*&Z literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 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 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..989c00c303e07bf279094881de301098b9afbd1b GIT binary patch literal 1118 zcmV-k1flzhP)_pADTyQ`b7?iVi- z5y#Qe(( z3JVKAGyY+CZ3Y@XLzAd6Qt(E%+davOD4t+vWSU8PscBR~yI7dhR90|_B6j)$%uJAN zZ6P#vAY|Zcc6Rn#QL8R+#bfJqIzOyUw@1y~ol!6tr1SH0nwy)W=H_PJF4siEG6SWhrTl2GuCCJU?JXA$o}QkgSy>q#98;&Gqr-6USPf{PU%B3N1Kr)-O1nth8^9e! zZWl=yNEk2>l`s$iTMVqMtZeq@+}z}OTU%R(PpYOE0F#rGidZ9}8K|wTC7;j7^QNYzly+d60W4Bv zu|`BQFgiNQbMP!wS68RB1JewEot+&;uuLQaIQoZ&hdc-U$n6@Y8o(`7T)Y@zWWeL` z@D&@{QICa?oTFi?0kF8Zs9SZ($OiD-KRi54H#axDZed|T=~KjX16a5m9UUpcjSN8i zz`y{%Wugsr)z#HXpCYCk0PXGVe1Rj27Y$$yJU>6r*TvX>d3nj}-#Ul}?(gsE@$r%W#++YTTH^1E2KMO;1mM4~>QfLV?dWzdD`H zFRWNO8g>CKIXO8?OxtfEjS&Nluac9K9c(JCx?C4RAk)c^tsaQZGKC8a7YEv-H^HPsd{Hq-D4T0)w>DP9XC{=!IN{BASQ04*_#4+kz5 kb_##ClV}%gBH|(b1G7tyi&FQ8XaE2J07*qoM6N<$f?muIE&u=k literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 4f0f1d64e58ba64d180ce43ee13bf9a17835fbca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!T`d~}kPdz`ap@3m+4 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

FJ$wK}0tWNB{uH;AM~i diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..09f416e049473222eda32196adb62fe6f52d42df GIT binary patch literal 2169 zcmb_e=|2>V7M?Le!?Vd}nNXAUGNs(IFN3_e*=Mo! z%2w2jWl%B7l6vj3(}djV!~GBLhjY&F{GRjW`JLx1Y0l_N5U?~D002Pj?T~-)qW5nT z65#pS+-MU3K*-V_Y2^}gW3>opcg;u~-iMLqk`DQ0tshAbq_&v$nL2B^<{h|N3^jHP~dJ zFbZ9;Z zz#w<*hTT;Gn}s?_QL=yaGnwfhf&(<(EB|dN4qhJ%9khti_Jfws-nESytN!?KKziBk(87a z7Z{KVEWKLc_%6&I6jvq(e5!UO$_f$Gc|s8)r(e~Q_I}8O z7{BNL8z?NH?H#-K-EW9u5l~cAR8wDn1-OO}4t{o23RyLF;jaO*vd{VSWytyL?CjK3 zS1;fHqVWSZQF87l`(mP#a-cxT{~?i=hjhNndQi8hCtU0E3_n)4!`kC+1^BrIA6I)-Q%!vO?rx$jz^39w@>Y{&1|&pJpy2mJJGICVYr>(N8FgT z?eG`}6qxGP&h80#Bi6SUuUa9s*wS}7E#c2^tE3o>eeHXk*nC#&~Y*MUd;{qvJi+=$r#dxH=ot< zY*YT$8poxw2h}t50AqadKez2qbcw*5bsLt`$X#^PFlZMuODnkv75)&|0+6`ggV7tX zjDYg%T&j#UpP3sdu*Mmf^a4m2QZ?m2Qm9g*AYV?|=qgkPX?^HXOdUHr0OB=q^7$RKsvunU#&!IMCgmNB;h&v(2BclMe2=UK9efK6aH8YF=GnP{PWo3}03CT-(dg&KycQn<|h3mwjJaJh9pmRHX zfvqq(I{b5IIm^>t_R~g_1DP->C@L%EvSDQ@1z2|?4i%fNe5k&jkbBxI+S3RQZ;(So zVcQN}bb&r3=Ez?ToJTUoNxIH=JFkp;{2epQmdkNHZUO={2_vGvyP&@YMK}G z#fuj={rvnAsRTk&$@xx7rhtgS2+1{W zDbJse9^qsD8LF|bYGAM>X%2Qqn!oM?E!o6vZf;^PUuM>`9rsDbqhHV`#ZH}i%1U*8 z8q8NIXoD_uM8uR!x;kcOXYU$mYJz2E-ty?iJMF+vDSf`epML@d^Xg38HbPZ;v(_=UeIgtk;PBNzR{X SmBqZ50$^{8M%Gz-C;S)ZI|=dt literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 948a3070fe34c611c42c0d3ad3013a0dce358be0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..0394bab35839f014ec3f9a5970334314ec68e7e2 GIT binary patch literal 4615 zcmV+i68Pj0D*vjqL!CKDG!IznF1;m#R@7oTBV2#LuU|`N6Ww{ zMX80f1;OGt6sN#AV^NTofP-UszaIhuqVnk9^KJGdoBjVkx%a<&LjreazPUH|?w;NK z&h9y9AOB5MR3t@G0I30?A@K0S58qK8IG-#NNgh+f`|i8%PC%0CDWNROi7Ho0B)Oyp zAggod&e7EoPTx1}(W6IeLfd=pxhJorq{Ii{JwC&C$fK9zq}36bAv{8(G%|cXU!&5} z(tN^D!W6Qd`g2EwhK6h|o%5z(AT8Aez}#GG^>4!BOZ zrT~9mr!qHG@aGPBb$P%^)QP&$2DkRzGD+_k+3idsVH)9U2Xa(`|L5?1P=E|gL3$pv zVH(=x*53M@gq`I-$Vp~VXXg_k=QV<^nj*X=utH>=74^wB%|{!#y-xnA-XxXyo;`cE zq|VJCTu{gm=At%8cY~~3H&tlk47Ay)FZCfcK&Z!mP$z#$QOQ1~gL;SS3fO;$ztLvG zNbZO1Q=Oj;Vx@{VM0^|SNEvsC&5T3G>lD~LDW8?0FX)r(TismHsZNU;Jg~GpUgu6! zjI4SDwatgoC#SyFiKN;{YUuB|;ku)%Z$R7C*+B27MoBYNXZ!*;1fzl)xK!yteH`^} zsOSsz@h{xxo2~?QwsJxBFWEp|80np;*HHUKYld~y_jr|qT2IO-XhDtoOg8kUhLz!l z?3G{ z!Gi}|OP4OSjvYHzLAo1|2YFFOmtz{}yW{{fVVcU3@x;@N98Z6x0bz@F?!EV3YwXyu z*4njetutrN*odwPD1)+)0a?0yQ(z9rA6Ui3#XncMGM3oEP-SfhICVnh#_c{SSCBPf z!USvM#*Nl@-+gBzHdsIgWI-lmqYk}Z0}y*#Gz*Rt78a(eoS8_lZ30C8a#^8q^85Df zYt5cL+uE~dkBvk(T)%$Z_E~k38-VZ!ojP?|5mk9BBlOKX)+ALhf-5s+ z_bH6EMvNF?En2k5I&|oe_0vy3*+_H3>C>mJ4I4ICA1Wo)bG1tolg!H?lG#TggL)46#1=-~;RA$&)sc-0=PP-&@OR6DL}O1`V>wW$5KX0osN(qOEANm-Pg5M6=+$-|x={ zhn`H4EQHZNM+y&m^!Mx6&wBgqw*`@UXWf9&_|ZonS~k=|XTAv;w#QO`{AFb{0atjDAEMfkZ0Evw#17tE{X{jP^i?XXvs_0_{Q{ z^g3&TG7G*XU(g<02DLU&Y`-{M@w(u8^UXJHol^0`4?kE34jd4jq&huKd0nPypbvVT z0pf=A1v9~AFup+SW%zu)W<>lRDJ*F71Gp&wp&*>zE3dp__3quy-o_aaN&Y6@&R4GX?RtDgjgMu8TtotD$KfsYhv?r7ZpAVAzqv> z<91g7b4L#Ncm^fOvAZwe%SYtBhqDl`<_Eal6`-0S8q}k~t;03>$|OB?Ln`nm6bxnb z1Gl>Z0B{I1M1J7U;I_JGh&^;P71+Xsb%DVkqJT;cX;HSFxaFsJ>`LJ1r?9XvubaHR z98rKd1(12akdu>B1dbgSWvl>-TZeFAuM03nL;;l?!Vl!<=l>cUJBFi*{r?>o48;Kh z5d~B@VzDar`~5S(v6CO*`1DT7xL6kUwE9&MQ9uRo#19T?{z@G4HTNp(0d~NRaP5u@ zIS2|05d~C$6|ga?(h*nLmJnx{ty;BeMl)as7jh636e0?!fZ&o=#Jl6-;;=7-(O+qX zc=xkiyLN3zQ~T9Ip&+7w3h>6{d3lAD@uFHN6hstI4n+Z%GBPr{xhdd| z+}zxbr3Muc=#gY7(ChSy`|rQsx_b3$71=nSe(kl_Y+=HK z{n@r{n@#r4ojYxLJ)&YE78@ITm*l&021J#w%-msq#3HY3TKN!NP?L zZE|sEY0Q{0w!Fat#Ft71&^oJ(IL7Z2iLHNC0el|ZlY8 zVe6nN=ye5)mtJ~F+*Q)$E?c(Dme&iI!!BLASXo(FzmXi<59Xy;Zj_#$-kA!0i$W$s zQDEfAkzreq>2(DI>a+F9C!g44qOHS*4YTF<0wn}JfA`&Y_X5X`Ga#zmCgF=#+Yu~>8XhlHC zju=3!9S&!#*ApmSef3pG+mG1)fd?M2<@W;SPTK$9g4>LYj3zqoYQo|mCLtlA1DPT5 zII786FmvWiTZco1UPmAR!EVo{O`ST`mftIwJ6eDpi;s`THgrr>c?eo zsh9;@w{Ep{Iuz)2)CBB$u3x|2CI|TR(@%~4=7fy@uSxT>nmEPJp1GSJPBKJlk(--4 zN(wP%hJYuZeA031dxb8)I^fBhB}0bZfYt_}zUa3G}1K-h`LqxAeCLU2aW&)1C_HNwMsxD8RG z`4K5OIT@K-(`@(yW&u38$ytEavD4<47wEE`fJdM3Y%%ut_3{8rkH?4c93i>7f!lC7 zIXUydrQ|fQB+XDkxtJ>_~XasK>y>(NIawUrA6 zit|0)qD70|;4)D2!%5r`qSxetf&%=Sxp4&mFTC)Ac=}x@B^c;3Rp4oQ94Wf}=m!P> z9*5P-g#xx182uE^zY7i}m(@NQV@td!Yu&na4-$3?!c8lI2?|9Cx=hAH4?SeP|Ni@~ zvOzx90;YdGMH&5Pl9H18fWw+%f49_t1YqklmBOgk5l)#_0Du+g;>C+?1O*CR9)L&- zPrU1SRlM=W8zz31pbB{OBl4jEya3!u4uc#0N`fy)ATRExh-j~@$k@7o0Xscs&K%d# zS{+n5qeqXn)~s1m?Z#iYM!p0eynGWK9gT$-4qt+@{d(eAkdm31IUaTm6+z1mm4^h3 zMjVVgg^ASxzYz!GSFKv*>S!5f&z=>bXfRLW2MXqd1}ftIN#HCYAt4SNYMch05W7N? zS$@BNB}`GN;dKE6qw?vepSI4OJ7*)$4cNPJ+R@a3t%t`Sf81853CIQOb?JE5fGf#a zU~zv9sez1P?`qn#X-RQ$@qSsMaZ|*=5AJ>V;fDbcTN7~ByK?2qaQ#YF#g+qJY0-5s zCMKpkxbhVFRFfLU$H(Iz8leiU9)#SPK>`uuh#i zWh2=QM~)m3cREdNthqt8`&n68bHI({$nnH0)P(7T?Nr=rX`i2;UnZTh(QOJRAWDKF z=FOWYc2k|MkYKU3Wy=Cuz8I}}xZv{pb) zc^y0Da4UfU(}Z8qdh4yX#E*RW2*uQ(kJ&LJGLYffEdlg}qaE~7njKs-Z>KojS|gtm zDr^)R8;hg1OhQL;%zsBjAR8`XW4$x=4eFW)eUlCsKRJ*o`;P6JS|^{AP=cI-mWuI><`J99~A|ytYE5VnV znmU&J!hYU6Dy?U;K^^tzgU{zXAQxFa*+=yCrkEYK#7c;7(xgcSz2-M>-n=I**j9Jy z)X6rQ^bXe*=(84Wr#}3XMmtWm@@3!fFH7na`JB)ogkiBUF)?ZMnnNgT+qUgrBXsw#YVBI9eL@UsKyBqYvnd>{G1lW1S;kO<0IDfrG-$3VPpx8edAj;g20V zc09?7Ac%OHN1IMcxS`I<((<+lbAvYGFa>Q!+tCN?fR89-)v{jeWDSvgZ2z{yng>awW|q2@}O8ft3=BVmQAnTSXq{L7fOI z(FSVEytufy{%9N8DBFrC2W_wOCa0!^#$%NT``Ly%hcyEfQ4k#+-8DTueIhx!RpciQ zfe@Ghooq=QMr{=^vHItLO16|yK|1#BQ77uAHsHy1jCc@_w!z$>t+l$ct&IfxiK!e5 zn<^s;m?j^Q(2*jIK51!b&k-^2(Wu;tTLm;b#BL*q3v?E6K9qqniSQe=E;$XEkc~P} z7wSaaXam|J?L3HgzrTNrBvu5rZ4=4P;-B8|tnh;vLP=6m(jbgba)_@Jaet##_68zx zJB{A|;3}s2i1jvF+NjiS51a)P~x)IZ(Ew?=JdSV|T zo=G6Ig42_c6CP&9{yNAiB;tw)onbC$wDu++@-uRlgAx-H2LpJI&*-~e$RqP&y8t#F zG9W7(vZZ5%eMg;C3fBY6Q8_YSjb2%a=fc}4E zrSzssacq<^nmW|Rs93PJni30R<8w<(bK_$LO4L?!_OxLl$}K$MUEllnMK|rg=f3;y z*?;3j|Nh>)p0JQ3A~rf(MibH2r+)3cyV1qF&;8m{w-S*y+0mM){KTK^M5}ksc`qX3 zy>rf^b>~l>SSHds8(I@hz3&PD@LmEs4&prkT=BjsBCXTMhN$_)+kvnl0bLKW5rEsj z*d#KXGDB4P&>etx0X+`R19yC=LS)j!mgs5M0L~+o-T~Jl!p!AJxnGAhV%~rhYUL4hlWhgES3Kb5oA&X z{}?3OBSS-{!v$nCIGj->(-TAG)8LR{htr41^gxsT8yqt2@DEG6Yl`Uma3Nd4;YUoW zTbkYl3CMU5ypMF3EIkYmWL|*BknM`0+Kq6CpvO(y$#j94e+q{vI{Zp8cV_6RK!`&C zob$*5Q|$IZ09dW=L!V zw@#2wviu|<#3lgGE8GEhcx+zBt`} zOwP8j9X%^f7i_bth4PiJ$LYtFJSCN$3xwDN;8mr*B;CJwBP2G0TMq0uNt7S^DO_wE zepk!Wrn#Z#03j{`c*Rf~y3o7?J}w?tEELRUR2cgxB*Y{LzA#pxHgf}q?u5idu>077 zd^=p)`nA}6e`|@`p?u}YU66PP_MA}Zqqe!c{nK&z%Jwq1N4e_q<#4g^xaz=ao;u|6 zwpRcW2Lax=ZGbx=Q*HhlJ`Ns#Y*r0*%!T?P*TTiX;rb)$CGLz=rSUum$)3Qyv{BL2 zO*=OI2|%(Yz~`pNEOnLp>+?T@glq-DujlIp?hdJeZ7ctP4_OKx|5@EOps3rr(pWzg zK4d3&oN-X2qN(d_MkfwB4I)_)!I_6nj2iA9u^pQ{;GckGLxBGrJUM2Wdda!k)Y>lq zmjws>dVQ*vW9lvEMkiN3wE-__6OWD0txS&Qn0n22cyj4Q*8(nG4!G{6OOwNvsrPIL zCl-$W9UwkEUVuLwyD%|inbOF*xMODZ4VMEVAq_zUxZ+K#Gdqf!DW$5f)?7UNOFMz! zrB~tuu=6X2FE(p^iqgxr+?ZK;=yz`e;C$#_@D9Lj-+TDVOrva>(#*PVbaHO>A)mhl z07OJWCqYC60518$!&c`eNBcBW%GnfaQ*$eazV^2_AW?j)h;J1nUjN(I9=0+!RVx~% z3@Tf!P0TE+98jA?WceK-}A1% zW!K)lyKcGqy#M~})315-A#2NXQ`?6NR#Apo=S!oF=JfpX>iR*49ec{7AN$xxpK{D$ z2d%Fz&rdfSqourN$~Y^NFIMV1CZ?J*bMx~H3k&meGtH@q9ra2vZxmA$S(#jaaj-g4 ztJmxG+DLV<*q<|sDXPp$X>E)#S}Vm&sRaO5P&goh2><}FEdZSXDqsL$06sAkh(e+v zAsBhKSRexgwg6tIy~GFJzaTxXD(}|+0eOwFDA%rn`X;MVwDHT9=4=g%OaJ9s%3b9>9EUTnnp0t;2Zpa{*>mk~hZqItE_!dQ zOtC>8`$l|mV43Jbudf0N6&&X;{=z}Zi}d1`2qmJ}i|0*GsulD3>GgQXHN)pkR6sf1 z?5ZU%&xtL}oH;YiAA)d*^Ndw2T$+Mjuzyzz@-SM`9df7LqTxLuIwC~S0092~+=qYv z@*ja;?Wt!T!{U?c*Z0YtGe)XbI&y-?B&G2$`JDM)(dIV9G`Sc#6?sI60de6kv+)Qb zUW~2|WjvJq3TA8`0+sWA3zRhY9a~ow)O~&StBkG2{*{TGiY~S8ep{V&Vo2l<6LWsu z^#p0-v*t2?3&aA1)ozu|%efSR=XnpX$lvTeRdKlvM!@|pM5p2w3u-6 zU>}t2xiYLS+{|%C65AzX+23Mtlq?BS&YdYcYsVjoiE&rT>;Necn6l^K)T^lmE`5u{ zm1i+-a-gc;Z&v-{;8r)z6NYfBUv+=_L}ef}qa9FX01)+Aaf+;xj(mL6|JUzGJR1|fnanb%?BPPIp>SCjP|8qE5qJ{=n5ZGw?81z3(k;pzH%1CtlX50{E7h)$h{qGKfzC`e2o`*IqA#tjA z`Fz&^%$b9F*N`)U-#6>a)Z`55`$Dd0cfcs0$d13^ONrdCu9xcv_=n#WQo8stcz3jP9|2EvdI-RhJM3%Q%oM&!OlShM|0 z?gz?wHZSnm45njLtsz8PVT1S&jAlbKg5kVam$p16=EK@Sj4EP0OtH zmJDmdc^v)x>56Qg_wmYHz6h)>kl_h$>0@J!ypv%APmjZTAQVLy6Fu50RGY&JAVNhx zrF_qG6`x9MkT;1SFWo$)l{M$;3qUDn9JwE}z zRl#E_bDRJFii61kPgBybIgp8dNW!Cc1b*^YYk-#oWLJvtM_v^hQx~9?8LD4VFFxBF z3MlrsSC%f9Oupn*ctPL0U1fwfX?`tRhPD{PSLFPQOmIt$mDy0SgpNVvHS+f#Do>h1Gn?LZU9(KaN>Q_=Y*_T zvtD7%_u^^+{g`0VGzg(VZrpVQ6Ub5M=tI_p7T93R8@3Zulu3|#{iNcu!oiHxZ4Rf*( zfmiN$$ru(*_Zqn=`Gq#OuHRTSwp7uH_SokR&|)RuW5yo=Z|_4?qU-JU+tpt>!B&Is z@N(=SG;bpVc;AO@zbmMM zScqq1)b-ZQIrs={oD}|?6y{$HNB1U0^LsBh8JI&3!GBZxOXI<}&5-$lgkAaYqhOTb z?2vEnZ$-kk;*M_17(upJF3%+iH*s0-r{vttXVB2OUwI1s^+G(Ft(U8gYFXC}#P&E^ z>T@C^tS`Z7{6HT4_nF~n>JlZtk5&qDBl6r|^kzQYe`wq!C)n@$c>WOPA61NDFj<<6 zGW71NMMhwAl!U-yqrq2xrSFqRCI8acw7?}3j;ynxo*-b7Co;g5r%^j=H@9({PXXBf z@r>U>>N;E)81wx`B4f%{PB~MHka_);%kBCb(d|Jy5!MqJ%2p`t&@L)4$T2j&-WHvG zv3(uyA_gwqNu(k?jQTtv3dgPKRZoH8prxe7>pQBW5L&dpumS&5Ld2?(sCpJjvc4L5 zEnh&?91WVm)ZdTj=fjJ$pPDdgAttLXuke+?KdKxu@_3|hyOvf}>? z&;`o8uJ^Ttii)ulqoZja?zmGD;mbVF+wZgP*#6TrZ%e{9FOS0_%BQ*{5lY&xlQur!C*2@cC8F0 z*O6?H!0pb>#^Vw>#{ofaj(ygoJ$Tz5a5wnUlDBcGo9m7ihX6HUTv$6Ug6Pl|Mq7Lh zWMvH76xi%3Y9{q@UFH314k}{W|B@}jZPWsi%(4`eWc8VRVIk!zQNmb_9Ag*mXOAQz z_4jdLt*5yXb{fga$uHchDg~c#+a)7qO^i0l<$40X13vSu3Mm;GWF_yUEUdk!D$TN* zdpM+DS5_B}Zs9&Kv(eIed)e`NG3%8rh9z^W7bc~87U2-1%+v);7CYQNwc;}8hHkZO zqjzGfL1Po5q29>X*H@d+rKDbPZ3PIvE9l*Krl}$$BQs)R#uKHzOU_P9N%479q2vHJ zK6Yjmmb!YimB)J%eGSc7VZYp$R)pBJa{Qx$Rye+i#8gxY0={uqj=yq#htq)w`^wOp zH~Y^sSKQ7Lx;Zp_*rbL-F>%RzWugJ`5_(wg>6&>q1q2q<32sDP#1Qw&Kv>a7DBL0* zg%d%;-a_Gcnvm_8%+Q@#i?bZE?%UlD=&FdsSa)}K(&}(ty`)2{ zFj>)_VgW-S;{E1ZbKXS#OkZ7J_t^*St^eFztoNI1B2m*^5FSq8hU4RJ5Y!5Ilmlb$ zogbU9>0gK;fBT3G+xw!a=spB>cUS^|-5wq7%+*KySR?&dAFCgGd`;}>F-`99`}Y%5 z4-NLK72x|TvN1#jr^z<^V&;~UdtKjaK=lWOFFmjsJS zv#~bdgvwP(&f~q4=V-CBii(Os(66QSvB%rrm;1Mea>RxfX#q_!3F|V!Yd0jMRHltJ z0T?&}LGqt(B|X2MS68GIkQ=UGab>YH#?z|S(Vc-)a-t9>ufN|3<~V2@CuQsYRCrb+0jms zDLkfoW~|1c&ARjcuk1q_RUibm`|cr2eWswk=v*WB7(LDdp`eiC&=Sb+6*S(yq}V&# z=wtKqulak5$S`_%*L|m$4<9~UX}j~I7^NO{G;v{@pcVlM=|Aqz;G6AQELI7Y4_fhq z#CLZ@jvxEew>E4coRxAjM$VWPT+jEACF4M(-TN z-4P5d6F*j*xfzVp7c(rm+FNGym^Vajl>svFH82a+ z;&NHhH@_}52an=-SOjbh|1PjKQJMAk1|4`s9FE7JVUPhRoE7Xw4@m^d(t>pW1#v(D z>O{GkX}qG^y|?rx460(U`Fn;XVv%a$8PC;_iaR&{7%k09 zzAqHzvoA+wQoNqUkbln(Q}2gSFI4czd*SO+FNW(8DJ4xh`?)JdH!ZTw;q|pAskfsp z?bl!PZO#AE!`in(_g65hU#`Z_14anycAv_=^dzxscrwd8@B{+#we>Yx44s=%lyos` z66yL(NxNoxBXEP;Amoov2_ST19800)%}-@c-@o<_$yzRnU;`15?c#?XBr{m*_b)%d z`--$JfSf!M#Sb^wrX7m#C`aWF)VGi?1uS+<3hCzktx6B6IMoaT<3?r58nc>_UCpZ7 znxglR&Cr-Y!5}T9N3WnP)+R$Ex3hIE?6lN4tx)S3*=tw!}xH8c|2vCb=XUN_D)< ztG(4JO1B_c1qFE;zlVthXvhAl3*H+~^rQup8$GsU?r^Y1uol*&aVv4C27=Q0uGNTp zauPT|87SpR&N>4kmWIyTjBR*})2ZoG&~l&1@Td54T7Z7~6_aEqI!h3)?Bz3-Y3FAS zj-!TZQmkb^dw&VMX0>#UNBK-unN0bt9Bxg|Dp{_sZuk5EU?uFDjvFB|-sbgyhMkF~WpA95M+Yxqu za(BS6jBq5fzEnR$RJSe;MQeb;h?wxkzN|5pcK|@pfZERE)_$ls7KGEtxTa#?5&fx2 zitUsEY!1v%?3$MA>;95~3U|5l`}{-6tQ|FpJ6amJq zQCdgI{ljkQNdM^&39J_2#A$P)QlsAy(4B``?$40=Zg4%8`+18?_B5L)nh5FQEDVal zNV*ZB2v!1UU|_)bw_gy^CNxVe7PwCXl~7f+6Y+vwqJ4WB*vL7s49{1l_7wda+Tgzm z3L}?*?(hOiIm3rjC_=4Qn;GhY;10)t5>{x_&Q~S#?3E z7v0c)Q%MU@Kt&T%?=j*+;hgL1*RPWqv9WY3L0c}f4Y&E*YA-Uv@wCK(Zm6hNSYWVO z?mNy)oGr94#lLjbnN0L8-8T zB~Ri}g$NyzZmyKE+{Mk!&5zI%tX=?6(R@3fSf~)Npw{L+`GU##W8&Ma2RkN(W=Upm zLbs+o4{-adK=5?dVw0a82Pfy<_-R?wS`lxbsO%b>`n6jp0f!zVh0lYt8r_o7_&|}T z9_{3Jo71)ATN8D9XRVbu|-;XEn6 z6k9#0qH{&{4mK_OrRj5e!>G`wrKROTNx!r6i{+P?Q_25WUS7W3d1|1`bZGmOW+xxD z;cHQ2UTF#?|4O^{L2A83CP7hw^h#w|AIYSC@9jn6yQ)cAg*dfy(MTrmejjVP#t9$F z(|{Uslvgd*M`k*Y1K95i8T5*AEN_p zB9SMshq&Ox<#aA0N5!BNTfBl+wLO0Z2ri(b^^kE#G@&n3T(6q?s?UFnz}|vAL1}7z ztVvJIF5t!4B6Za5#SDY^AwpUVwEr#fmB)PXr)TDLb&9l<9}N{o*HEWM%PH=kZoUb; literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index 28d4b77f9f036a47549d47db79c16788749dca10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2884 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 NOhrLMzFO7__CGuUk(dAg literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9287f5083623b375139afb391af71cc533a7dd37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5914 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9126ae37cbc3587421d6889eadd1d91fbf1994d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7778 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

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..606b9bd --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #383838 + \ No newline at end of file