From 22474b2295ff54a3da7f2b0b1a67835a0d26a6fa Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Thu, 14 Mar 2024 11:36:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E8=BF=9B=E5=85=A5`?= =?UTF-8?q?=E9=80=9A=E7=94=A8=E8=AE=BE=E7=BD=AE`=E6=97=B6`=E5=86=8D?= =?UTF-8?q?=E6=AC=A1=E6=A3=80=E6=9F=A5`=E6=98=AF=E5=90=A6=E5=B7=B2?= =?UTF-8?q?=E6=8E=88=E6=9D=83`=E5=B7=B2=E5=BC=80=E5=90=AF=E5=8A=9F?= =?UTF-8?q?=E8=83=BD`=E7=9A=84`=E5=BF=85=E9=9C=80=E6=9D=83=E9=99=90`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../forwarder/fragment/SettingsFragment.kt | 142 +++++++++--------- .../fragment/action/SettingsFragment.kt | 2 +- app/src/main/res/layout/fragment_settings.xml | 4 +- .../layout/fragment_tasks_action_settings.xml | 4 +- app/src/main/res/values-en/strings.xml | 6 +- app/src/main/res/values-zh-rCN/strings.xml | 6 +- app/src/main/res/values-zh-rTW/strings.xml | 6 +- app/src/main/res/values/strings.xml | 6 +- 8 files changed, 96 insertions(+), 80 deletions(-) diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt index 45649d88..72bed9f7 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt @@ -349,7 +349,6 @@ class SettingsFragment : BaseFragment(), View.OnClickL //转发短信 @SuppressLint("UseSwitchCompatOrMaterialCode") private fun switchEnableSms(sbEnableSms: SwitchButton) { - sbEnableSms.isChecked = SettingUtils.enableSms sbEnableSms.setOnCheckedChangeListener { _: CompoundButton?, isChecked: Boolean -> SettingUtils.enableSms = isChecked if (isChecked) { @@ -364,22 +363,23 @@ class SettingsFragment : BaseFragment(), View.OnClickL // 发送短信 //.permission(Permission.SEND_SMS) // 读取短信 - .permission(Permission.READ_SMS).request(object : OnPermissionCallback { + .permission(Permission.READ_SMS) + .request(object : OnPermissionCallback { override fun onGranted(permissions: List, all: Boolean) { - if (all) { - XToastUtils.info(R.string.toast_granted_all) - } else { - XToastUtils.info(R.string.toast_granted_part) + Log.d(TAG, "onGranted: permissions=$permissions, all=$all") + if (!all) { + XToastUtils.warning(getString(R.string.forward_sms) + ": " + getString(R.string.toast_granted_part)) } } override fun onDenied(permissions: List, never: Boolean) { + Log.e(TAG, "onDenied: permissions=$permissions, never=$never") if (never) { - XToastUtils.info(R.string.toast_denied_never) + XToastUtils.error(getString(R.string.forward_sms) + ": " + getString(R.string.toast_denied_never)) // 如果是被永久拒绝就跳转到应用权限系统设置页面 XXPermissions.startPermissionActivity(requireContext(), permissions) } else { - XToastUtils.info(R.string.toast_denied) + XToastUtils.error(getString(R.string.forward_sms) + ": " + getString(R.string.toast_denied)) } SettingUtils.enableSms = false sbEnableSms.isChecked = false @@ -387,12 +387,12 @@ class SettingsFragment : BaseFragment(), View.OnClickL }) } } + sbEnableSms.isChecked = SettingUtils.enableSms } //转发通话 @SuppressLint("UseSwitchCompatOrMaterialCode") private fun switchEnablePhone(sbEnablePhone: SwitchButton, scbCallType1: SmoothCheckBox, scbCallType2: SmoothCheckBox, scbCallType3: SmoothCheckBox, scbCallType4: SmoothCheckBox, scbCallType5: SmoothCheckBox, scbCallType6: SmoothCheckBox) { - sbEnablePhone.isChecked = SettingUtils.enablePhone scbCallType1.isChecked = SettingUtils.enableCallType1 scbCallType2.isChecked = SettingUtils.enableCallType2 scbCallType3.isChecked = SettingUtils.enableCallType3 @@ -417,22 +417,23 @@ class SettingsFragment : BaseFragment(), View.OnClickL // 读取通话记录 .permission(Permission.READ_CALL_LOG) // 读取联系人 - .permission(Permission.READ_CONTACTS).request(object : OnPermissionCallback { + .permission(Permission.READ_CONTACTS) + .request(object : OnPermissionCallback { override fun onGranted(permissions: List, all: Boolean) { - if (all) { - XToastUtils.info(R.string.toast_granted_all) - } else { - XToastUtils.info(R.string.toast_granted_part) + Log.d(TAG, "onGranted: permissions=$permissions, all=$all") + if (!all) { + XToastUtils.warning(getString(R.string.forward_calls) + ": " + getString(R.string.toast_granted_part)) } } override fun onDenied(permissions: List, never: Boolean) { + Log.e(TAG, "onDenied: permissions=$permissions, never=$never") if (never) { - XToastUtils.info(R.string.toast_denied_never) + XToastUtils.error(getString(R.string.forward_calls) + ": " + getString(R.string.toast_denied_never)) // 如果是被永久拒绝就跳转到应用权限系统设置页面 XXPermissions.startPermissionActivity(requireContext(), permissions) } else { - XToastUtils.info(R.string.toast_denied) + XToastUtils.error(getString(R.string.forward_calls) + ": " + getString(R.string.toast_denied)) } SettingUtils.enablePhone = false sbEnablePhone.isChecked = false @@ -440,6 +441,7 @@ class SettingsFragment : BaseFragment(), View.OnClickL }) } } + sbEnablePhone.isChecked = SettingUtils.enablePhone scbCallType1.setOnCheckedChangeListener { _: SmoothCheckBox, isChecked: Boolean -> SettingUtils.enableCallType1 = isChecked if (!isChecked && !SettingUtils.enableCallType1 && !SettingUtils.enableCallType2 && !SettingUtils.enableCallType3 && !SettingUtils.enableCallType4 && !SettingUtils.enableCallType5 && !SettingUtils.enableCallType6) { @@ -493,34 +495,32 @@ class SettingsFragment : BaseFragment(), View.OnClickL //转发应用通知 @SuppressLint("UseSwitchCompatOrMaterialCode") private fun switchEnableAppNotify(sbEnableAppNotify: SwitchButton, scbCancelAppNotify: SmoothCheckBox, scbNotUserPresent: SmoothCheckBox) { - val isEnable: Boolean = SettingUtils.enableAppNotify - sbEnableAppNotify.isChecked = isEnable - - val layoutOptionalAction: LinearLayout = binding!!.layoutOptionalAction - layoutOptionalAction.visibility = if (isEnable) View.VISIBLE else View.GONE - //val layoutAppList: LinearLayout = binding!!.layoutAppList - //layoutAppList.visibility = if (isEnable) View.VISIBLE else View.GONE - sbEnableAppNotify.setOnCheckedChangeListener { _: CompoundButton?, isChecked: Boolean -> - layoutOptionalAction.visibility = if (isChecked) View.VISIBLE else View.GONE - //layoutAppList.visibility = if (isChecked) View.VISIBLE else View.GONE + binding!!.layoutOptionalAction.visibility = if (isChecked) View.VISIBLE else View.GONE SettingUtils.enableAppNotify = isChecked if (isChecked) { //检查权限是否获取 - XXPermissions.with(this).permission(Permission.BIND_NOTIFICATION_LISTENER_SERVICE).request(OnPermissionCallback { _, allGranted -> - if (!allGranted) { - SettingUtils.enableAppNotify = false - sbEnableAppNotify.isChecked = false - XToastUtils.error(R.string.tips_notification_listener) - return@OnPermissionCallback - } + XXPermissions.with(this) + .permission(Permission.BIND_NOTIFICATION_LISTENER_SERVICE) + .request(OnPermissionCallback { permissions, allGranted -> + if (!allGranted) { + Log.e(TAG, "onGranted: permissions=$permissions, allGranted=false") + SettingUtils.enableAppNotify = false + sbEnableAppNotify.isChecked = false + XToastUtils.error(R.string.tips_notification_listener) + return@OnPermissionCallback + } - SettingUtils.enableAppNotify = true - sbEnableAppNotify.isChecked = true - CommonUtils.toggleNotificationListenerService(requireContext()) - }) + SettingUtils.enableAppNotify = true + sbEnableAppNotify.isChecked = true + CommonUtils.toggleNotificationListenerService(requireContext()) + }) } } + val isEnable = SettingUtils.enableAppNotify + sbEnableAppNotify.isChecked = isEnable + binding!!.layoutOptionalAction.visibility = if (isEnable) View.VISIBLE else View.GONE + scbCancelAppNotify.isChecked = SettingUtils.enableCancelAppNotify scbCancelAppNotify.setOnCheckedChangeListener { _: SmoothCheckBox, isChecked: Boolean -> SettingUtils.enableCancelAppNotify = isChecked @@ -533,35 +533,44 @@ class SettingsFragment : BaseFragment(), View.OnClickL //启用定位功能 private fun switchEnableLocation(@SuppressLint("UseSwitchCompatOrMaterialCode") sbEnableLocation: SwitchButton, layoutLocationSetting: LinearLayout, rgAccuracy: RadioGroup, rgPowerRequirement: RadioGroup, xsbMinInterval: XSeekBar, xsbMinDistance: XSeekBar) { - //是否启用定位功能 - sbEnableLocation.isChecked = SettingUtils.enableLocation - layoutLocationSetting.visibility = if (SettingUtils.enableLocation) View.VISIBLE else View.GONE sbEnableLocation.setOnCheckedChangeListener { _: CompoundButton?, isChecked: Boolean -> SettingUtils.enableLocation = isChecked layoutLocationSetting.visibility = if (isChecked) View.VISIBLE else View.GONE if (isChecked) { - XXPermissions.with(this).permission(Permission.ACCESS_COARSE_LOCATION).permission(Permission.ACCESS_FINE_LOCATION).permission(Permission.ACCESS_BACKGROUND_LOCATION).request(object : OnPermissionCallback { - override fun onGranted(permissions: List, all: Boolean) { - restartLocationService("START") - } - - override fun onDenied(permissions: List, never: Boolean) { - if (never) { - XToastUtils.error(R.string.toast_denied_never) - // 如果是被永久拒绝就跳转到应用权限系统设置页面 - XXPermissions.startPermissionActivity(requireContext(), permissions) - } else { - XToastUtils.error(R.string.toast_denied) + XXPermissions.with(this) + .permission(Permission.ACCESS_COARSE_LOCATION) + .permission(Permission.ACCESS_FINE_LOCATION) + .permission(Permission.ACCESS_BACKGROUND_LOCATION) + .request(object : OnPermissionCallback { + override fun onGranted(permissions: List, all: Boolean) { + Log.d(TAG, "onGranted: permissions=$permissions, all=$all") + if (!all) { + XToastUtils.warning(getString(R.string.enable_location) + ": " + getString(R.string.toast_granted_part)) + } + restartLocationService("START") } - SettingUtils.enableLocation = false - sbEnableLocation.isChecked = false - restartLocationService("STOP") - } - }) + + override fun onDenied(permissions: List, never: Boolean) { + Log.e(TAG, "onDenied: permissions=$permissions, never=$never") + if (never) { + XToastUtils.error(getString(R.string.enable_location) + ": " + getString(R.string.toast_denied_never)) + // 如果是被永久拒绝就跳转到应用权限系统设置页面 + XXPermissions.startPermissionActivity(requireContext(), permissions) + } else { + XToastUtils.error(getString(R.string.enable_location) + ": " + getString(R.string.toast_denied)) + } + SettingUtils.enableLocation = false + sbEnableLocation.isChecked = false + restartLocationService("STOP") + } + }) } else { restartLocationService("STOP") } } + val isEnable = SettingUtils.enableLocation + sbEnableLocation.isChecked = isEnable + layoutLocationSetting.visibility = if (isEnable) View.VISIBLE else View.GONE //设置位置精度:高精度(默认) rgAccuracy.check( @@ -643,9 +652,6 @@ class SettingsFragment : BaseFragment(), View.OnClickL //接受短信指令 @SuppressLint("UseSwitchCompatOrMaterialCode") private fun switchEnableSmsCommand(sbEnableSmsCommand: SwitchButton, etSafePhone: EditText) { - sbEnableSmsCommand.isChecked = SettingUtils.enableSmsCommand - etSafePhone.visibility = if (SettingUtils.enableSmsCommand) View.VISIBLE else View.GONE - sbEnableSmsCommand.setOnCheckedChangeListener { _: CompoundButton?, isChecked: Boolean -> SettingUtils.enableSmsCommand = isChecked etSafePhone.visibility = if (isChecked) View.VISIBLE else View.GONE @@ -659,22 +665,21 @@ class SettingsFragment : BaseFragment(), View.OnClickL // 发送短信 .permission(Permission.SEND_SMS) // 读取短信 - .permission(Permission.READ_SMS).request(object : OnPermissionCallback { + .permission(Permission.READ_SMS) + .request(object : OnPermissionCallback { override fun onGranted(permissions: List, all: Boolean) { - if (all) { - XToastUtils.info(R.string.toast_granted_all) - } else { - XToastUtils.info(R.string.toast_granted_part) + if (!all) { + XToastUtils.warning(getString(R.string.sms_command) + ": " + getString(R.string.toast_denied_never)) } } override fun onDenied(permissions: List, never: Boolean) { if (never) { - XToastUtils.info(R.string.toast_denied_never) + XToastUtils.error(getString(R.string.sms_command) + ": " + getString(R.string.toast_denied_never)) // 如果是被永久拒绝就跳转到应用权限系统设置页面 XXPermissions.startPermissionActivity(requireContext(), permissions) } else { - XToastUtils.info(R.string.toast_denied) + XToastUtils.error(getString(R.string.sms_command) + ": " + getString(R.string.toast_denied)) } SettingUtils.enableSmsCommand = false sbEnableSmsCommand.isChecked = false @@ -682,6 +687,9 @@ class SettingsFragment : BaseFragment(), View.OnClickL }) } } + val isEnable = SettingUtils.enableSmsCommand + sbEnableSmsCommand.isChecked = isEnable + etSafePhone.visibility = if (isEnable) View.VISIBLE else View.GONE etSafePhone.setText(SettingUtils.smsCommandSafePhone) etSafePhone.addTextChangedListener(object : TextWatcher { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/SettingsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/SettingsFragment.kt index 555f0fd8..4d9074bf 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/SettingsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/SettingsFragment.kt @@ -430,7 +430,7 @@ class SettingsFragment : BaseFragment(), Vi if (enableSms) enableList.add(getString(R.string.forward_sms)) else disableList.add(getString(R.string.forward_sms)) val enablePhone = binding!!.sbEnablePhone.isChecked - if (enablePhone) enableList.add(getString(R.string.forward_missed_calls)) else disableList.add(getString(R.string.forward_missed_calls)) + if (enablePhone) enableList.add(getString(R.string.forward_calls)) else disableList.add(getString(R.string.forward_calls)) val enableCallType1 = binding!!.scbCallType1.isChecked val enableCallType2 = binding!!.scbCallType2.isChecked val enableCallType3 = binding!!.scbCallType3.isChecked diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 99df3ad7..17e74a9b 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -86,13 +86,13 @@ diff --git a/app/src/main/res/layout/fragment_tasks_action_settings.xml b/app/src/main/res/layout/fragment_tasks_action_settings.xml index 9c5ef77f..07b22e07 100644 --- a/app/src/main/res/layout/fragment_tasks_action_settings.xml +++ b/app/src/main/res/layout/fragment_tasks_action_settings.xml @@ -96,13 +96,13 @@ diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 7f659064..55b6a650 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -386,8 +386,8 @@ Open the HttpServer or FRPC by the SMS command Safe Phone Only handle requests from specified phones - Forward Calls Log - Main switch, requires permissions to read call log and contacts. + Forward Calls Log + Main switch, requires permissions to read call log and contacts. Forward App Notify Main switch, requires permission to read notification. Auto close Ntf. @@ -1206,6 +1206,8 @@ Notification Triggered upon receiving app notification received app notification + Bluetooth Device + Triggered upon changes in Bluetooth status Send Sms Notify Frpc On/Off diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 33279199..ba77b677 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -387,8 +387,8 @@ 根据短信指令开关对应功能,指令格式:smsf#功能名#动作名 安全手机 仅处理指定手机请求,多个手机以逗号分隔 - 转发通话记录 - 请授予读取通话记录、联系人等权限,并选择转发类型,再开启 + 转发通话记录 + 请授予读取通话记录、联系人等权限,并选择转发类型,再开启 转发应用通知 请授予通知使用权再开启;开启“自动消除”可避免多条通知堆叠 自动消除通知 @@ -1207,6 +1207,8 @@ APP通知 在接收到APP通知时触发 接收到APP通知 + 蓝牙设备 + 在蓝牙状态发生改变时触发 发送短信 推送通知 启停Frpc diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 3f9590b5..855716bf 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -387,8 +387,8 @@ 根據簡訊指令開關對應功能,指令格式:smsf#功能名#動作名 安全手機 僅處理指定手機請求,多個手機以逗號分隔 - 轉發通話記錄 - 請授予讀取通話記錄、聯繫人等權限,並選擇轉發類型,再開啟 + 轉發通話記錄 + 請授予讀取通話記錄、聯繫人等權限,並選擇轉發類型,再開啟 轉發應用通知 請授予通知使用權再開啟;開啟“自動消除”可避免多條通知堆疊 自動消除通知 @@ -1207,6 +1207,8 @@ APP通知 在接收到APP通知時觸發 接收到APP通知 + 蓝牙设备 + 在蓝牙状态发生改变时触发 發送簡訊 推送通知 啟停Frpc diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 321500f1..3c4bd215 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -387,8 +387,8 @@ 根据短信指令开关对应功能,指令格式:smsf#功能名#动作名 安全手机 仅处理指定手机请求,多个手机以逗号分隔 - 转发通话记录 - 请授予读取通话记录、联系人等权限,并选择转发类型,再开启 + 转发通话记录 + 请授予读取通话记录、联系人等权限,并选择转发类型,再开启 转发应用通知 请授予通知使用权再开启;开启“自动消除”可避免多条通知堆叠 自动消除通知 @@ -1207,6 +1207,8 @@ APP通知 在接收到APP通知时触发 接收到APP通知 + 蓝牙设备 + 在蓝牙状态发生改变时触发 发送短信 推送通知 启停Frpc