diff --git a/app/src/main/java/com/idormy/sms/forwarder/App.kt b/app/src/main/java/com/idormy/sms/forwarder/App.kt index 39eedd38..148ff511 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/App.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/App.kt @@ -93,6 +93,15 @@ class App : Application(), CactusCallback, Configuration.Provider by Core { @SuppressLint("StaticFieldLeak") lateinit var context: Context + //自定义模板可用变量标签 + var COMMON_TAG_MAP: MutableMap = mutableMapOf() + var SMS_TAG_MAP: MutableMap = mutableMapOf() + var CALL_TAG_MAP: MutableMap = mutableMapOf() + var APP_TAG_MAP: MutableMap = mutableMapOf() + var LOCATION_TAG_MAP: MutableMap = mutableMapOf() + var BATTERY_TAG_MAP: MutableMap = mutableMapOf() + var NETWORK_TAG_MAP: MutableMap = mutableMapOf() + //通话类型:1.来电挂机 2.去电挂机 3.未接来电 4.来电提醒 5.来电接通 6.去电拨出 var CALL_TYPE_MAP: MutableMap = mutableMapOf() var FILED_MAP: MutableMap = mutableMapOf() @@ -390,6 +399,74 @@ class App : Application(), CactusCallback, Configuration.Provider by Core { private fun switchLanguage(newLocale: Locale) { isNeedSpaceBetweenWords = !newLocale.language.contains("zh") + //自定义模板可用变量标签 + COMMON_TAG_MAP.clear() + COMMON_TAG_MAP.putAll( + mapOf( + getString(R.string.tag_receive_time) to getString(R.string.insert_tag_receive_time), + getString(R.string.tag_current_time) to getString(R.string.insert_tag_current_time), + getString(R.string.tag_device_name) to getString(R.string.insert_tag_device_name), + getString(R.string.tag_app_version) to getString(R.string.insert_tag_app_version), + ) + ) + SMS_TAG_MAP.clear() + SMS_TAG_MAP.putAll( + mapOf( + getString(R.string.tag_from) to getString(R.string.insert_tag_from), + getString(R.string.tag_sms) to getString(R.string.insert_tag_sms), + getString(R.string.tag_card_slot) to getString(R.string.insert_tag_card_slot), + getString(R.string.tag_card_subid) to getString(R.string.insert_tag_card_subid), + ) + ) + CALL_TAG_MAP.clear() + CALL_TAG_MAP.putAll( + mapOf( + getString(R.string.tag_from) to getString(R.string.insert_tag_from), + getString(R.string.tag_sms) to getString(R.string.insert_tag_msg), + getString(R.string.tag_card_slot) to getString(R.string.insert_tag_card_slot), + getString(R.string.tag_card_subid) to getString(R.string.insert_tag_card_subid), + getString(R.string.tag_call_type) to getString(R.string.insert_tag_call_type), + ) + ) + APP_TAG_MAP.clear() + APP_TAG_MAP.putAll( + mapOf( + getString(R.string.tag_uid) to getString(R.string.insert_tag_uid), + getString(R.string.tag_package_name) to getString(R.string.insert_tag_package_name), + getString(R.string.tag_app_name) to getString(R.string.insert_tag_app_name), + getString(R.string.tag_title) to getString(R.string.insert_tag_title), + getString(R.string.tag_msg) to getString(R.string.insert_tag_msg), + ) + ) + LOCATION_TAG_MAP.clear() + LOCATION_TAG_MAP.putAll( + mapOf( + getString(R.string.tag_location) to getString(R.string.insert_tag_location), + getString(R.string.tag_location_longitude) to getString(R.string.insert_tag_location_longitude), + getString(R.string.tag_location_latitude) to getString(R.string.insert_tag_location_latitude), + getString(R.string.tag_location_address) to getString(R.string.insert_tag_location_address), + ) + ) + BATTERY_TAG_MAP.clear() + BATTERY_TAG_MAP.putAll( + mapOf( + getString(R.string.tag_battery_pct) to getString(R.string.insert_tag_battery_pct), + getString(R.string.tag_battery_status) to getString(R.string.insert_tag_battery_status), + getString(R.string.tag_battery_plugged) to getString(R.string.insert_tag_battery_plugged), + getString(R.string.tag_battery_info) to getString(R.string.insert_tag_battery_info), + getString(R.string.tag_battery_info_simple) to getString(R.string.insert_tag_battery_info_simple), + ) + ) + NETWORK_TAG_MAP.clear() + NETWORK_TAG_MAP.putAll( + mapOf( + getString(R.string.tag_ipv4) to getString(R.string.insert_tag_ipv4), + getString(R.string.tag_ipv6) to getString(R.string.insert_tag_ipv6), + getString(R.string.tag_ip_list) to getString(R.string.insert_tag_ip_list), + getString(R.string.tag_net_type) to getString(R.string.insert_tag_net_type), + ) + ) + CALL_TYPE_MAP.clear() CALL_TYPE_MAP.putAll( mapOf( diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/RulesEditFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/RulesEditFragment.kt index 0e108bf0..3002bf07 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/RulesEditFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/RulesEditFragment.kt @@ -166,9 +166,6 @@ class RulesEditFragment : BaseFragment(), View.OnClic binding!!.rbCallType.visibility = View.GONE binding!!.rbContent.visibility = View.GONE binding!!.tvMuRuleTips.setText(R.string.mu_rule_app_tips) - binding!!.btInsertExtra.visibility = View.GONE - binding!!.btInsertSender.visibility = View.GONE - binding!!.btInsertContent.visibility = View.GONE //初始化APP下拉列表 initAppSpinner() //监听已安装App信息列表加载完成事件 @@ -183,11 +180,6 @@ class RulesEditFragment : BaseFragment(), View.OnClic binding!!.rbInformContent.visibility = View.GONE //binding!!.rbMultiMatch.visibility = View.GONE binding!!.tvMuRuleTips.setText(R.string.mu_rule_call_tips) - binding!!.btInsertContent.visibility = View.GONE - binding!!.btInsertSenderApp.visibility = View.GONE - binding!!.btInsertUid.visibility = View.GONE - binding!!.btInsertTitleApp.visibility = View.GONE - binding!!.btInsertContentApp.visibility = View.GONE //通话类型:1.来电挂机 2.去电挂机 3.未接来电 4.来电提醒 5.来电接通 6.去电拨出 binding!!.spCallType.setItems(CALL_TYPE_MAP.values.toList()) @@ -210,13 +202,12 @@ class RulesEditFragment : BaseFragment(), View.OnClic binding!!.rbPackageName.visibility = View.GONE binding!!.rbUid.visibility = View.GONE binding!!.rbInformContent.visibility = View.GONE - binding!!.btInsertSenderApp.visibility = View.GONE - binding!!.btInsertUid.visibility = View.GONE - binding!!.btInsertTitleApp.visibility = View.GONE - binding!!.btInsertContentApp.visibility = View.GONE } } + //创建标签按钮 + CommonUtils.createTagButtons(requireContext(), binding!!.glSmsTemplate, binding!!.etSmsTemplate, ruleType) + if (ruleId <= 0) { //新增 titleBar?.setSubTitle(getString(R.string.add_rule)) binding!!.btnDel.setText(R.string.discard) @@ -230,15 +221,6 @@ class RulesEditFragment : BaseFragment(), View.OnClic override fun initListeners() { binding!!.btnSilentPeriod.setOnClickListener(this) - binding!!.btInsertSender.setOnClickListener(this) - binding!!.btInsertContent.setOnClickListener(this) - binding!!.btInsertSenderApp.setOnClickListener(this) - binding!!.btInsertUid.setOnClickListener(this) - binding!!.btInsertTitleApp.setOnClickListener(this) - binding!!.btInsertContentApp.setOnClickListener(this) - binding!!.btInsertExtra.setOnClickListener(this) - binding!!.btInsertTime.setOnClickListener(this) - binding!!.btInsertDeviceName.setOnClickListener(this) binding!!.btnTest.setOnClickListener(this) binding!!.btnDel.setOnClickListener(this) binding!!.btnSave.setOnClickListener(this) @@ -334,7 +316,6 @@ class RulesEditFragment : BaseFragment(), View.OnClic @SingleClick override fun onClick(v: View) { try { - val etSmsTemplate: EditText = binding!!.etSmsTemplate when (v.id) { R.id.btn_silent_period -> { OptionsPickerBuilder(context, OnOptionsSelectListener { _: View?, options1: Int, options2: Int, _: Int -> @@ -350,51 +331,6 @@ class RulesEditFragment : BaseFragment(), View.OnClic } } - R.id.bt_insert_sender -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_content -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_sms)) - return - } - - R.id.bt_insert_sender_app -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_package_name)) - return - } - - R.id.bt_insert_uid -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_uid)) - return - } - - R.id.bt_insert_title_app -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_title)) - return - } - - R.id.bt_insert_content_app -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_msg)) - return - } - - R.id.bt_insert_extra -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_device_name)) - return - } - R.id.btn_test -> { val ruleNew = checkForm() testRule(ruleNew) @@ -742,7 +678,7 @@ class RulesEditFragment : BaseFragment(), View.OnClic ) val silentDayOfWeek = map.filter { it.value.isChecked } - .toList().map {it.first }.joinToString(",") + .toList().map { it.first }.joinToString(",") return Rule( ruleId, @@ -907,4 +843,4 @@ class RulesEditFragment : BaseFragment(), View.OnClic } }.show() } -} \ No newline at end of file +} 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 6e79aa0c..8cfe6c84 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 @@ -221,11 +221,6 @@ class SettingsFragment : BaseFragment(), View.OnClickL binding!!.btnExtraDeviceMark.setOnClickListener(this) binding!!.btnExtraSim1.setOnClickListener(this) binding!!.btnExtraSim2.setOnClickListener(this) - binding!!.btInsertSender.setOnClickListener(this) - binding!!.btInsertContent.setOnClickListener(this) - binding!!.btInsertExtra.setOnClickListener(this) - binding!!.btInsertTime.setOnClickListener(this) - binding!!.btInsertDeviceName.setOnClickListener(this) binding!!.btnExportLog.setOnClickListener(this) //监听已安装App信息列表加载完成事件 @@ -235,7 +230,6 @@ class SettingsFragment : BaseFragment(), View.OnClickL @SuppressLint("SetTextI18n") @SingleClick override fun onClick(v: View) { - val etSmsTemplate: EditText = binding!!.etSmsTemplate when (v.id) { R.id.btn_silent_period -> { OptionsPickerBuilder(context, OnOptionsSelectListener { _: View?, options1: Int, options2: Int, _: Int -> @@ -304,37 +298,6 @@ class SettingsFragment : BaseFragment(), View.OnClickL return } - R.id.bt_insert_sender -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_content -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_sms)) - return - } - - R.id.bt_insert_extra -> { - CommonUtils.insertOrReplaceText2Cursor( - etSmsTemplate, getString(R.string.tag_card_slot) - ) - return - } - - R.id.bt_insert_time -> { - CommonUtils.insertOrReplaceText2Cursor( - etSmsTemplate, getString(R.string.tag_receive_time) - ) - return - } - - R.id.bt_insert_device_name -> { - CommonUtils.insertOrReplaceText2Cursor( - etSmsTemplate, getString(R.string.tag_device_name) - ) - return - } - R.id.btn_export_log -> { XXPermissions.with(this) // 申请储存权限 @@ -1098,6 +1061,8 @@ class SettingsFragment : BaseFragment(), View.OnClickL //设置转发信息模版 private fun editSmsTemplate(textSmsTemplate: EditText) { + //创建标签按钮 + CommonUtils.createTagButtons(requireContext(), binding!!.glSmsTemplate, textSmsTemplate, "all") textSmsTemplate.setText(SettingUtils.smsTemplate) textSmsTemplate.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/AlarmFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/AlarmFragment.kt index 955a7730..bd6b69c6 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/AlarmFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/AlarmFragment.kt @@ -77,7 +77,7 @@ class AlarmFragment : BaseFragment(), View.OnC mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, 2) mCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener { override fun onCountDown(time: Int) { - binding!!.btnTest.text = String.format(getString(R.string.seconds_n), time.toString()) + binding!!.btnTest.text = String.format(getString(R.string.seconds_n), time) } override fun onFinished() { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/NotificationFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/NotificationFragment.kt index 15c8a752..9643e16e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/NotificationFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/NotificationFragment.kt @@ -7,7 +7,6 @@ import android.view.View import android.view.ViewGroup import android.widget.AdapterView import android.widget.CompoundButton -import android.widget.EditText import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -156,6 +155,9 @@ class NotificationFragment : BaseFragment { OptionsPickerBuilder(context, OnOptionsSelectListener { _: View?, options1: Int, options2: Int, _: Int -> @@ -229,51 +221,6 @@ class NotificationFragment : BaseFragment { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_content -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_sms)) - return - } - - R.id.bt_insert_sender_app -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_package_name)) - return - } - - R.id.bt_insert_uid -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_uid)) - return - } - - R.id.bt_insert_title_app -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_title)) - return - } - - R.id.bt_insert_content_app -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_msg)) - return - } - - R.id.bt_insert_extra -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name -> { - CommonUtils.insertOrReplaceText2Cursor(etSmsTemplate, getString(R.string.tag_device_name)) - return - } - R.id.btn_test -> { mCountDownHelper?.start() try { @@ -506,4 +453,4 @@ class NotificationFragment : BaseFragment(), View.OnClickLi } binding!!.spEncryptionAlgorithm.selectedIndex = 0 + //创建标签按钮 + CommonUtils.createTagButtons(requireContext(), binding!!.glTitleTemplate, binding!!.etTitleTemplate) + CommonUtils.createTagButtons(requireContext(), binding!!.glAutoCopyTemplate, binding!!.etAutoCopyTemplate) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -179,14 +182,6 @@ class BarkFragment : BaseFragment(), View.OnClickLi } override fun initListeners() { - binding!!.btInsertSender.setOnClickListener(this) - binding!!.btInsertExtra.setOnClickListener(this) - binding!!.btInsertTime.setOnClickListener(this) - binding!!.btInsertDeviceName.setOnClickListener(this) - binding!!.btInsertSenderApp.setOnClickListener(this) - binding!!.btInsertUid.setOnClickListener(this) - binding!!.btInsertTitleApp.setOnClickListener(this) - binding!!.btInsertContentApp.setOnClickListener(this) binding!!.btnTest.setOnClickListener(this) binding!!.btnDel.setOnClickListener(this) binding!!.btnSave.setOnClickListener(this) @@ -196,48 +191,7 @@ class BarkFragment : BaseFragment(), View.OnClickLi @SingleClick override fun onClick(v: View) { try { - val etTitleTemplate: EditText = binding!!.etTitleTemplate - val etAutoCopyTemplate: EditText = binding!!.etAutoCopyTemplate when (v.id) { - R.id.bt_insert_sender -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_extra -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_device_name)) - return - } - - R.id.bt_insert_sender_app -> { - CommonUtils.insertOrReplaceText2Cursor(etAutoCopyTemplate, getString(R.string.tag_package_name)) - return - } - - R.id.bt_insert_uid -> { - CommonUtils.insertOrReplaceText2Cursor(etAutoCopyTemplate, getString(R.string.tag_uid)) - return - } - - R.id.bt_insert_title_app -> { - CommonUtils.insertOrReplaceText2Cursor(etAutoCopyTemplate, getString(R.string.tag_title)) - return - } - - R.id.bt_insert_content_app -> { - CommonUtils.insertOrReplaceText2Cursor(etAutoCopyTemplate, getString(R.string.tag_msg)) - return - } R.id.btn_test -> { mCountDownHelper?.start() diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/DingtalkGroupRobotFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/DingtalkGroupRobotFragment.kt index d55562b1..8f5ac2a0 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/DingtalkGroupRobotFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/DingtalkGroupRobotFragment.kt @@ -5,7 +5,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.CompoundButton -import android.widget.EditText import android.widget.RadioGroup import androidx.fragment.app.viewModels import com.google.gson.Gson @@ -96,6 +95,9 @@ class DingtalkGroupRobotFragment : BaseFragment { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_extra -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_device_name)) - return - } R.id.btn_test -> { mCountDownHelper?.start() @@ -269,4 +247,4 @@ class DingtalkGroupRobotFragment : BaseFragment { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_extra -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_device_name)) - return - } R.id.btn_test -> { mCountDownHelper?.start() @@ -295,4 +281,4 @@ class DingtalkInnerRobotFragment : BaseFragment(), View.OnClick } } + //创建标签按钮 + CommonUtils.createTagButtons(requireContext(), binding!!.glTitleTemplate, binding!!.etTitleTemplate) + CommonUtils.createTagButtons(requireContext(), binding!!.glNickname, binding!!.etNickname) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -237,14 +241,6 @@ class EmailFragment : BaseFragment(), View.OnClick } override fun initListeners() { - binding!!.btInsertSenderToNickname.setOnClickListener(this) - binding!!.btInsertExtraToNickname.setOnClickListener(this) - binding!!.btInsertTimeToNickname.setOnClickListener(this) - binding!!.btInsertDeviceNameToNickname.setOnClickListener(this) - binding!!.btInsertSender.setOnClickListener(this) - binding!!.btInsertExtra.setOnClickListener(this) - binding!!.btInsertTime.setOnClickListener(this) - binding!!.btInsertDeviceName.setOnClickListener(this) binding!!.btnTest.setOnClickListener(this) binding!!.btnDel.setOnClickListener(this) binding!!.btnSave.setOnClickListener(this) @@ -260,48 +256,7 @@ class EmailFragment : BaseFragment(), View.OnClick @SingleClick override fun onClick(v: View) { try { - val etNickname: EditText = binding!!.etNickname - val etTitleTemplate: EditText = binding!!.etTitleTemplate when (v.id) { - R.id.bt_insert_sender_to_nickname -> { - CommonUtils.insertOrReplaceText2Cursor(etNickname, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_extra_to_nickname -> { - CommonUtils.insertOrReplaceText2Cursor(etNickname, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time_to_nickname -> { - CommonUtils.insertOrReplaceText2Cursor(etNickname, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name_to_nickname -> { - CommonUtils.insertOrReplaceText2Cursor(etNickname, getString(R.string.tag_device_name)) - return - } - - R.id.bt_insert_sender -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_extra -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_device_name)) - return - } R.id.btn_test -> { mCountDownHelper?.start() @@ -653,4 +608,4 @@ class EmailFragment : BaseFragment(), View.OnClick super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/FeishuAppFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/FeishuAppFragment.kt index 918664ac..aba0453f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/FeishuAppFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/FeishuAppFragment.kt @@ -4,7 +4,6 @@ import android.text.TextUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.EditText import androidx.fragment.app.viewModels import com.google.gson.Gson import com.google.gson.JsonParser @@ -105,6 +104,10 @@ class FeishuAppFragment : BaseFragment(), View } } + //创建标签按钮 + CommonUtils.createTagButtons(requireContext(), binding!!.glTitleTemplate, binding!!.etTitleTemplate) + CommonUtils.createTagButtons(requireContext(), binding!!.glMessageCard, binding!!.etMessageCard) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -150,15 +153,6 @@ class FeishuAppFragment : BaseFragment(), View } override fun initListeners() { - binding!!.btInsertSenderToTitle.setOnClickListener(this) - binding!!.btInsertExtraToTitle.setOnClickListener(this) - binding!!.btInsertTimeToTitle.setOnClickListener(this) - binding!!.btInsertDeviceNameToTitle.setOnClickListener(this) - binding!!.btInsertSender.setOnClickListener(this) - binding!!.btInsertContent.setOnClickListener(this) - binding!!.btInsertExtra.setOnClickListener(this) - binding!!.btInsertTime.setOnClickListener(this) - binding!!.btInsertDeviceName.setOnClickListener(this) binding!!.btnTest.setOnClickListener(this) binding!!.btnDel.setOnClickListener(this) binding!!.btnSave.setOnClickListener(this) @@ -168,53 +162,7 @@ class FeishuAppFragment : BaseFragment(), View @SingleClick override fun onClick(v: View) { try { - val etTitleTemplate: EditText = binding!!.etTitleTemplate - val etMessageCard: EditText = binding!!.etMessageCard when (v.id) { - R.id.bt_insert_sender_to_title -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_extra_to_title -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time_to_title -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name_to_title -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_device_name)) - return - } - - R.id.bt_insert_sender -> { - CommonUtils.insertOrReplaceText2Cursor(etMessageCard, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_content -> { - CommonUtils.insertOrReplaceText2Cursor(etMessageCard, getString(R.string.tag_sms)) - return - } - - R.id.bt_insert_extra -> { - CommonUtils.insertOrReplaceText2Cursor(etMessageCard, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time -> { - CommonUtils.insertOrReplaceText2Cursor(etMessageCard, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name -> { - CommonUtils.insertOrReplaceText2Cursor(etMessageCard, getString(R.string.tag_device_name)) - return - } R.id.btn_test -> { mCountDownHelper?.start() @@ -315,4 +263,4 @@ class FeishuAppFragment : BaseFragment(), View super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/FeishuFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/FeishuFragment.kt index c1ce22c5..98b849cd 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/FeishuFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/FeishuFragment.kt @@ -4,7 +4,6 @@ import android.text.TextUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.EditText import androidx.fragment.app.viewModels import com.google.gson.Gson import com.google.gson.JsonParser @@ -105,6 +104,10 @@ class FeishuFragment : BaseFragment(), View.OnCli } } + //创建标签按钮 + CommonUtils.createTagButtons(requireContext(), binding!!.glTitleTemplate, binding!!.etTitleTemplate) + CommonUtils.createTagButtons(requireContext(), binding!!.glMessageCard, binding!!.etMessageCard) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -145,15 +148,6 @@ class FeishuFragment : BaseFragment(), View.OnCli } override fun initListeners() { - binding!!.btInsertSenderToTitle.setOnClickListener(this) - binding!!.btInsertExtraToTitle.setOnClickListener(this) - binding!!.btInsertTimeToTitle.setOnClickListener(this) - binding!!.btInsertDeviceNameToTitle.setOnClickListener(this) - binding!!.btInsertSender.setOnClickListener(this) - binding!!.btInsertContent.setOnClickListener(this) - binding!!.btInsertExtra.setOnClickListener(this) - binding!!.btInsertTime.setOnClickListener(this) - binding!!.btInsertDeviceName.setOnClickListener(this) binding!!.btnTest.setOnClickListener(this) binding!!.btnDel.setOnClickListener(this) binding!!.btnSave.setOnClickListener(this) @@ -163,53 +157,7 @@ class FeishuFragment : BaseFragment(), View.OnCli @SingleClick override fun onClick(v: View) { try { - val etTitleTemplate: EditText = binding!!.etTitleTemplate - val etMessageCard: EditText = binding!!.etMessageCard when (v.id) { - R.id.bt_insert_sender_to_title -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_extra_to_title -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time_to_title -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name_to_title -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_device_name)) - return - } - - R.id.bt_insert_sender -> { - CommonUtils.insertOrReplaceText2Cursor(etMessageCard, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_content -> { - CommonUtils.insertOrReplaceText2Cursor(etMessageCard, getString(R.string.tag_sms)) - return - } - - R.id.bt_insert_extra -> { - CommonUtils.insertOrReplaceText2Cursor(etMessageCard, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time -> { - CommonUtils.insertOrReplaceText2Cursor(etMessageCard, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name -> { - CommonUtils.insertOrReplaceText2Cursor(etMessageCard, getString(R.string.tag_device_name)) - return - } R.id.btn_test -> { mCountDownHelper?.start() @@ -295,4 +243,4 @@ class FeishuFragment : BaseFragment(), View.OnCli super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/GotifyFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/GotifyFragment.kt index 86b77b62..b9ab6e91 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/GotifyFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/GotifyFragment.kt @@ -4,7 +4,6 @@ import android.text.TextUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.EditText import androidx.fragment.app.viewModels import com.google.gson.Gson import com.idormy.sms.forwarder.R @@ -94,6 +93,9 @@ class GotifyFragment : BaseFragment(), View.OnCli } }) + //创建标签按钮 + CommonUtils.createTagButtons(requireContext(), binding!!.glTitleTemplate, binding!!.etTitleTemplate) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -132,10 +134,6 @@ class GotifyFragment : BaseFragment(), View.OnCli } override fun initListeners() { - binding!!.btInsertSender.setOnClickListener(this) - binding!!.btInsertExtra.setOnClickListener(this) - binding!!.btInsertTime.setOnClickListener(this) - binding!!.btInsertDeviceName.setOnClickListener(this) binding!!.btnTest.setOnClickListener(this) binding!!.btnDel.setOnClickListener(this) binding!!.btnSave.setOnClickListener(this) @@ -145,27 +143,7 @@ class GotifyFragment : BaseFragment(), View.OnCli @SingleClick override fun onClick(v: View) { try { - val etTitleTemplate: EditText = binding!!.etTitleTemplate when (v.id) { - R.id.bt_insert_sender -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_extra -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_device_name)) - return - } R.id.btn_test -> { mCountDownHelper?.start() @@ -242,4 +220,4 @@ class GotifyFragment : BaseFragment(), View.OnCli super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/PushplusFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/PushplusFragment.kt index dc37198d..d8f3e711 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/PushplusFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/PushplusFragment.kt @@ -4,7 +4,6 @@ import android.text.TextUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.EditText import android.widget.RadioGroup import androidx.fragment.app.viewModels import com.google.gson.Gson @@ -95,6 +94,9 @@ class PushplusFragment : BaseFragment(), View.O } }) + //创建标签按钮 + CommonUtils.createTagButtons(requireContext(), binding!!.glTitleTemplate, binding!!.etTitleTemplate) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -143,10 +145,6 @@ class PushplusFragment : BaseFragment(), View.O } override fun initListeners() { - binding!!.btInsertSender.setOnClickListener(this) - binding!!.btInsertExtra.setOnClickListener(this) - binding!!.btInsertTime.setOnClickListener(this) - binding!!.btInsertDeviceName.setOnClickListener(this) binding!!.btnTest.setOnClickListener(this) binding!!.btnDel.setOnClickListener(this) binding!!.btnSave.setOnClickListener(this) @@ -165,27 +163,7 @@ class PushplusFragment : BaseFragment(), View.O @SingleClick override fun onClick(v: View) { try { - val etTitleTemplate: EditText = binding!!.etTitleTemplate when (v.id) { - R.id.bt_insert_sender -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_from)) - return - } - - R.id.bt_insert_extra -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_card_slot)) - return - } - - R.id.bt_insert_time -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_receive_time)) - return - } - - R.id.bt_insert_device_name -> { - CommonUtils.insertOrReplaceText2Cursor(etTitleTemplate, getString(R.string.tag_device_name)) - return - } R.id.btn_test -> { mCountDownHelper?.start() @@ -272,4 +250,4 @@ class PushplusFragment : BaseFragment(), View.O super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/ServerchanFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/ServerchanFragment.kt index c150c173..83d3610f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/ServerchanFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/ServerchanFragment.kt @@ -226,4 +226,4 @@ class ServerchanFragment : BaseFragment(), Vi super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/SmsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/SmsFragment.kt index c012ab9a..979995b0 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/SmsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/SmsFragment.kt @@ -251,4 +251,4 @@ class SmsFragment : BaseFragment(), View.OnClickList super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/SocketFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/SocketFragment.kt index 7fe2a30f..f58be177 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/SocketFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/SocketFragment.kt @@ -262,4 +262,4 @@ class SocketFragment : BaseFragment(), View.OnCli super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/TelegramFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/TelegramFragment.kt index ad44cb38..4eee9318 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/TelegramFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/TelegramFragment.kt @@ -260,4 +260,4 @@ class TelegramFragment : BaseFragment(), View.O super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/UrlSchemeFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/UrlSchemeFragment.kt index 006e70c2..fdd64351 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/UrlSchemeFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/UrlSchemeFragment.kt @@ -223,4 +223,4 @@ class UrlSchemeFragment : BaseFragment(), View super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WebhookFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WebhookFragment.kt index d9cea769..3aba65a0 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WebhookFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WebhookFragment.kt @@ -336,4 +336,4 @@ class WebhookFragment : BaseFragment(), View.OnC super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkAgentFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkAgentFragment.kt index fabe2404..2b0289a8 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkAgentFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkAgentFragment.kt @@ -307,4 +307,4 @@ class WeworkAgentFragment : BaseFragment(), super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkRobotFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkRobotFragment.kt index 05701beb..42db07ab 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkRobotFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkRobotFragment.kt @@ -238,4 +238,4 @@ class WeworkRobotFragment : BaseFragment(), super.onDestroyView() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt index e1e48394..052a5612 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt @@ -6,18 +6,29 @@ import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.graphics.Rect +import android.os.Build import android.text.SpannableString import android.text.SpannableStringBuilder import android.text.Spanned import android.text.TextUtils import android.text.method.LinkMovementMethod import android.text.style.ClickableSpan +import android.util.TypedValue import android.view.View import android.widget.EditText +import android.widget.GridLayout +import android.widget.TextView import androidx.annotation.ColorInt import androidx.core.app.NotificationManagerCompat import androidx.fragment.app.Fragment import com.idormy.sms.forwarder.App +import com.idormy.sms.forwarder.App.Companion.APP_TAG_MAP +import com.idormy.sms.forwarder.App.Companion.BATTERY_TAG_MAP +import com.idormy.sms.forwarder.App.Companion.CALL_TAG_MAP +import com.idormy.sms.forwarder.App.Companion.COMMON_TAG_MAP +import com.idormy.sms.forwarder.App.Companion.LOCATION_TAG_MAP +import com.idormy.sms.forwarder.App.Companion.NETWORK_TAG_MAP +import com.idormy.sms.forwarder.App.Companion.SMS_TAG_MAP import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.webview.AgentWebActivity import com.idormy.sms.forwarder.core.webview.AgentWebFragment @@ -35,6 +46,8 @@ import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog.SingleButton import com.xuexiang.xui.widget.imageview.preview.PreviewBuilder import com.xuexiang.xutil.XUtil import com.xuexiang.xutil.common.StringUtils +import com.xuexiang.xutil.resource.ResUtils.getColor +import com.xuexiang.xutil.resource.ResUtils.getDrawable import com.xuexiang.xutil.resource.ResUtils.getString import java.net.Inet4Address import java.net.Inet6Address @@ -338,41 +351,76 @@ class CommonUtils private constructor() { XUtil.exitApp() } - /*fun switchLanguage(oldLocale: Locale, newLocale: Locale) { - val oldLang = if (TAG_LANG.contains(oldLocale.toString())) oldLocale.toString() else "en" - val newLang = if (TAG_LANG.contains(newLocale.toString())) newLocale.toString() else "en" - Log.i(App.TAG, "switchLanguage: oldLang=$oldLang, newLang=$newLang") + // 动态创建标签按钮并设置点击事件(将标签插入指定输入框) + fun createTagButtons(context: Context, gridLayout: GridLayout, editText: EditText, scene: String = "basic", excludeButtons: Array = emptyArray()) { + // 将排除的按钮转换成一个集合,方便查找 + val excludeSet = excludeButtons.toSet() - //替换自定义模板标签 - var smsTemplate = SettingUtils.smsTemplate - //替换Rule.sms_template中的标签 - var ruleColumn = "sms_template" - //替换Sender.json_setting中的标签 - var senderColumn = "json_setting" + // 清空GridLayout中的所有视图 + gridLayout.removeAllViews() - for (i in TAG_LIST.indices) { - val oldTag = TAG_LIST[i][oldLang].toString() - val newTag = TAG_LIST[i][newLang].toString() - if (oldTag == newTag) continue + // 根据场景动态拼接所有按钮数据 + val allButtons = when (scene) { + "sms" -> SMS_TAG_MAP + "call" -> CALL_TAG_MAP + "app" -> APP_TAG_MAP + else -> CALL_TAG_MAP + SMS_TAG_MAP + APP_TAG_MAP + }.toMutableMap() - smsTemplate = smsTemplate.replace(oldTag, newTag) - ruleColumn = "REPLACE($ruleColumn, '$oldTag', '$newTag')" - senderColumn = "REPLACE($senderColumn, '$oldTag', '$newTag')" + if (SettingUtils.enableLocation) { + allButtons += LOCATION_TAG_MAP + } + if (scene == "all") { + allButtons += BATTERY_TAG_MAP + allButtons += NETWORK_TAG_MAP + } + allButtons += COMMON_TAG_MAP + + val btnBackground = getDrawable(R.drawable.rounded_button) + val btnTextColor = getColor(android.R.color.white) + + // 遍历所有按钮数据,过滤掉需要排除的按钮 + allButtons.forEach { (tag, lable) -> + if (excludeSet.isNotEmpty() && excludeSet.contains(tag)) { + allButtons.remove(tag) + } + + val button = TextView(context).apply { + text = lable + setOnClickListener { + insertOrReplaceText2Cursor(editText, tag) + } + + // 设置紧凑样式 + setTextSize(TypedValue.COMPLEX_UNIT_SP, 9f) + maxLines = 1 + ellipsize = TextUtils.TruncateAt.END + setPadding(5, 5, 5, 5) + gravity = android.view.Gravity.CENTER + background = btnBackground + setTextColor(btnTextColor) + + // 布局参数 + layoutParams = GridLayout.LayoutParams().apply { + height = GridLayout.LayoutParams.WRAP_CONTENT + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + width = 0 + columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f) + } else { + width = GridLayout.LayoutParams.WRAP_CONTENT + } + setMargins(8, 8, 8, 8) + } + } + + gridLayout.addView(button) } - SettingUtils.smsTemplate = smsTemplate + } - val updateRuleSql = "UPDATE Rule SET sms_template = $ruleColumn WHERE sms_template != ''" - Log.d(App.TAG, "updateRuleSql: $updateRuleSql") - Core.rule.replaceTags(updateRuleSql) - - val updateSenderSql = "UPDATE Sender SET json_setting = $senderColumn WHERE type NOT IN (4, 5, 6, 7, 8, 14)" - Log.d(App.TAG, "updateSenderSql: $updateSenderSql") - Core.sender.replaceTags(updateSenderSql) - }*/ } init { throw UnsupportedOperationException("u can't instantiate me...") } -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/fragment_rules_edit.xml b/app/src/main/res/layout/fragment_rules_edit.xml index 95e400c5..58047e07 100644 --- a/app/src/main/res/layout/fragment_rules_edit.xml +++ b/app/src/main/res/layout/fragment_rules_edit.xml @@ -376,65 +376,13 @@ android:inputType="textMultiLine" app:met_clearButton="true" /> - - - - - - - - - - - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -566,8 +514,8 @@ + android:layout_height="wrap_content" + android:layout_marginTop="3dp"> - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_senders_bark.xml b/app/src/main/res/layout/fragment_senders_bark.xml index a434e3f4..21f65fd3 100644 --- a/app/src/main/res/layout/fragment_senders_bark.xml +++ b/app/src/main/res/layout/fragment_senders_bark.xml @@ -293,35 +293,13 @@ android:singleLine="true" app:met_clearButton="true" /> - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -361,36 +339,13 @@ android:singleLine="true" app:met_clearButton="true" /> - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> diff --git a/app/src/main/res/layout/fragment_senders_dingtalk_group_robot.xml b/app/src/main/res/layout/fragment_senders_dingtalk_group_robot.xml index 460c789e..7f059d62 100644 --- a/app/src/main/res/layout/fragment_senders_dingtalk_group_robot.xml +++ b/app/src/main/res/layout/fragment_senders_dingtalk_group_robot.xml @@ -253,35 +253,13 @@ android:singleLine="true" app:met_clearButton="true" /> - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -319,4 +297,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_senders_dingtalk_inner_robot.xml b/app/src/main/res/layout/fragment_senders_dingtalk_inner_robot.xml index 032d0907..a689ee4a 100644 --- a/app/src/main/res/layout/fragment_senders_dingtalk_inner_robot.xml +++ b/app/src/main/res/layout/fragment_senders_dingtalk_inner_robot.xml @@ -230,35 +230,13 @@ android:singleLine="true" app:met_clearButton="true" /> - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -443,4 +421,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_senders_email.xml b/app/src/main/res/layout/fragment_senders_email.xml index 9baefbd0..ce711eb7 100644 --- a/app/src/main/res/layout/fragment_senders_email.xml +++ b/app/src/main/res/layout/fragment_senders_email.xml @@ -149,35 +149,13 @@ android:singleLine="true" app:met_clearButton="true" /> - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -520,35 +498,13 @@ android:singleLine="true" app:met_clearButton="true" /> - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -586,4 +542,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_senders_feishu.xml b/app/src/main/res/layout/fragment_senders_feishu.xml index 0f7ff94f..b68dbbe7 100644 --- a/app/src/main/res/layout/fragment_senders_feishu.xml +++ b/app/src/main/res/layout/fragment_senders_feishu.xml @@ -158,35 +158,13 @@ android:singleLine="true" app:met_clearButton="true" /> - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -230,41 +208,13 @@ android:text="" tools:ignore="RtlHardcoded,SpeakableTextPresentCheck" /> - - - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -302,4 +252,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_senders_feishu_app.xml b/app/src/main/res/layout/fragment_senders_feishu_app.xml index 3c230ac4..c3ae6062 100644 --- a/app/src/main/res/layout/fragment_senders_feishu_app.xml +++ b/app/src/main/res/layout/fragment_senders_feishu_app.xml @@ -235,35 +235,13 @@ android:singleLine="true" app:met_clearButton="true" /> - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -307,41 +285,13 @@ android:text="" tools:ignore="RtlHardcoded,SpeakableTextPresentCheck" /> - - - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -379,4 +329,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_senders_gotify.xml b/app/src/main/res/layout/fragment_senders_gotify.xml index 58b28dfd..8c79d5c3 100644 --- a/app/src/main/res/layout/fragment_senders_gotify.xml +++ b/app/src/main/res/layout/fragment_senders_gotify.xml @@ -112,35 +112,13 @@ android:singleLine="true" app:met_clearButton="true" /> - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -205,4 +183,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_senders_pushplus.xml b/app/src/main/res/layout/fragment_senders_pushplus.xml index 6536a684..49d164fe 100644 --- a/app/src/main/res/layout/fragment_senders_pushplus.xml +++ b/app/src/main/res/layout/fragment_senders_pushplus.xml @@ -286,35 +286,13 @@ android:singleLine="true" app:met_clearButton="true" /> - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -352,4 +330,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index b4189374..39c160b3 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -1742,41 +1742,13 @@ android:text="" tools:ignore="RtlHardcoded,SpeakableTextPresentCheck" /> - - - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -1976,4 +1948,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_tasks_action_notification.xml b/app/src/main/res/layout/fragment_tasks_action_notification.xml index fa67b73c..ec2f1858 100644 --- a/app/src/main/res/layout/fragment_tasks_action_notification.xml +++ b/app/src/main/res/layout/fragment_tasks_action_notification.xml @@ -161,65 +161,13 @@ android:inputType="textMultiLine" app:met_clearButton="true" /> - - - - - - - - - - - - - - - - - - - - - + android:layout_gravity="center" + android:columnCount="4" + android:orientation="horizontal" /> @@ -357,4 +305,4 @@ - \ No newline at end of file + diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index ab9a0b27..2108b9ff 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -1,5 +1,33 @@ + Phone Number + SMS Content + Package Name + App Name + Inform Title + Inform Content + SIM Label + SIM SubId + Receive Time + Current Time + Device Name + SmsF Version + Call Type + Location + Longitude + Latitude + Address + Battery Percentage + Battery Status + Charging Method + Complete Battery Info + Simplified Battery Info + UID + Public IPv4 + Public IPv6 + IP List + Network Status + Sms Call App @@ -223,8 +251,8 @@ CoreID, AgentID, and Secret cannot be empty AgentId, AppKey, AppSecret, and UserIds cannot be empty The receiving phone number cannot be empty - Malformed multiple match rule line %s - Incorrect format on line %s of regex replacement + Malformed multiple match rule line %d + Incorrect format on line %d of regex replacement The Message Card Json is invalid. Host Port @@ -318,14 +346,6 @@ Custom templates Tip: Insert labels as needed; Leave blank to apply default template Phone - PackageName - UID - SMS - InformTitle - InformContent - SIM - Time - Device Battery Optimization Set it to manual management, including automatic startup, associated startup, and background running Unknown Number @@ -455,7 +475,7 @@ Increasing Interval Single Timeout secs - %s sec + %d sec Max Retries [%s] Congratulations, the sender test is successful, please continue to add forwarding rules! Test Channel diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index bc27a78d..7a522517 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1,5 +1,33 @@ + 来源号码 + 短信内容 + APP包名 + APP应用名 + 通知标题 + 通知内容 + 卡槽备注 + 卡槽主键 + 接收时间 + 当前时间 + 设备名称 + SmsF版本 + 通话类型 + 定位信息 + 定位经度 + 定位维度 + 定位地址 + 电池电量 + 电池状态 + 充电方式 + 电池完整信息 + 电池简单信息 + 用户UID + 公网IPv4 + 公网IPv6 + IP地址列表 + 网络状态 + 短信 通话 应用 @@ -224,8 +252,8 @@ 企业ID、AgentID、Secret都不能为空 AgentId、AppKey、AppSecret、UserIds都不能为空 接收手机号不能为空 - 多重匹配规则的第 %s 行格式有误 - 正则替换内容的第 %s 行格式有误 + 多重匹配规则的第 %d 行格式有误 + 正则替换内容的第 %d 行格式有误 自定义消息卡片Json不合法 主机 端口 @@ -319,14 +347,6 @@ 转发信息模版 Tip:按需插入内容标签;留空使用默认模版 来源号码 - APP包名 - UID - 短信内容 - 通知标题 - 通知内容 - 卡槽信息 - 接收时间 - 设备名称 忽略电池优化设置 请设置为手动管理:允许自启动、允许关联启动、允许后台运行 未知号码 @@ -456,7 +476,7 @@ 递增间隔 单次超时 - %s秒 + %d秒 最多重试 【%s】恭喜您,该发送通道测试成功,请继续添加转发规则! 测试通道 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index a6bcb7a0..d9e04ef1 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1,5 +1,33 @@ + 來源號碼 + 簡訊內容 + APP包名 + APP應用名 + 通知標題 + 通知內容 + 卡槽備註 + 卡槽主鍵 + 接收時間 + 當前時間 + 設備名稱 + SmsF版本 + 通話類型 + 定位資訊 + 定位經度 + 定位緯度 + 定位地址 + 電池電量 + 電池狀態 + 充電方式 + 電池完整資訊 + 電池簡單資訊 + 用戶UID + 公網IPv4 + 公網IPv6 + IP地址列表 + 網路狀態 + 簡訊 通話 應用 @@ -217,8 +245,8 @@ 企業ID、AgentID、Secret都不能為空 AgentId、AppKey、AppSecret、UserIds都不能為空 接收手機號不能為空 - 多重匹配規則的第 %s 行格式有誤 - 正則替換內容的第 %s 行格式有誤 + 多重匹配規則的第 %d 行格式有誤 + 正則替換內容的第 %d 行格式有誤 自定義消息卡片Json不合法 主機 端口 @@ -312,14 +340,6 @@ 轉發信息模版 Tip:按需插入內容標籤;留空使用默認模版 來源號碼 - APP包名 - UID - 簡訊內容 - 通知標題 - 通知內容 - 卡槽信息 - 接收時間 - 裝置名稱 忽略電池優化設置 請設置為手動管理:允許自啟動、允許關聯啟動、允許後台運行 未知號碼 @@ -449,7 +469,7 @@ 遞增間隔 單次超時 - %s秒 + %d秒 最多重試 【%s】恭喜您,該發送通道測試成功,請繼續添加轉發規則! 測試通道 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c09b59c3..a2b39a94 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -27,6 +27,34 @@ {{IP_LIST}} {{NET_TYPE}} + 来源号码 + 短信内容 + APP包名 + APP应用名 + 通知标题 + 通知内容 + 卡槽备注 + 卡槽主键 + 接收时间 + 当前时间 + 设备名称 + SmsF版本 + 通话类型 + 定位信息 + 定位经度 + 定位维度 + 定位地址 + 电池电量 + 电池状态 + 充电方式 + 电池完整信息 + 电池简单信息 + 用户UID + 公网IPv4 + 公网IPv6 + IP地址列表 + 网络状态 + 短信 通话 应用 @@ -251,8 +279,8 @@ 企业ID、AgentID、Secret都不能为空 AgentId、AppKey、AppSecret、UserIds都不能为空 接收手机号不能为空 - 多重匹配规则的第 %s 行格式有误 - 正则替换内容的第 %s 行格式有误 + 多重匹配规则的第 %d 行格式有误 + 正则替换内容的第 %d 行格式有误 自定义消息卡片Json不合法 主机 端口 @@ -346,14 +374,6 @@ 转发信息模版 Tip:按需插入内容标签;留空使用默认模版 来源号码 - APP包名 - UID - 短信内容 - 通知标题 - 通知内容 - 卡槽信息 - 接收时间 - 设备名称 忽略电池优化设置 请设置为手动管理:允许自启动、允许关联启动、允许后台运行 未知号码 @@ -483,7 +503,7 @@ 递增间隔 单次超时 - %s秒 + %d秒 最多重试 【%s】恭喜您,该发送通道测试成功,请继续添加转发规则! 测试通道