diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/entity/Rule.kt b/app/src/main/java/com/idormy/sms/forwarder/database/entity/Rule.kt index efd30aa4..8c6a0521 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/entity/Rule.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/entity/Rule.kt @@ -51,7 +51,6 @@ data class Rule( //免打扰(禁用转发)时间段 @ColumnInfo(name = "silent_period_start", defaultValue = "0") var silentPeriodStart: Int = 0, @ColumnInfo(name = "silent_period_end", defaultValue = "0") var silentPeriodEnd: Int = 0, - @ColumnInfo(name = "uid", defaultValue = "0") var uid: Int = 0, ) : Parcelable { companion object { @@ -135,6 +134,7 @@ data class Rule( FILED_PHONE_NUM -> R.id.rb_phone FILED_CALL_TYPE -> R.id.rb_call_type FILED_PACKAGE_NAME -> R.id.rb_package_name + FILED_UID -> R.id.rb_uid FILED_INFORM_CONTENT -> R.id.rb_inform_content FILED_MULTI_MATCH -> R.id.rb_multi_match else -> R.id.rb_transpond_all @@ -159,14 +159,11 @@ data class Rule( //检查这一行和上一行合并的结果是否命中 var mixChecked = false if (msg != null) { - if(this.uid != 0 && msg.uid != this.uid){ - Log.i(TAG, "rule:$this checkMsg:$msg checked:false") - return false - } //先检查规则是否命中 when (this.filed) { FILED_TRANSPOND_ALL -> mixChecked = true FILED_PHONE_NUM, FILED_PACKAGE_NAME -> mixChecked = checkValue(msg.from) + FILED_UID -> mixChecked = checkValue(msg.uid.toString()) FILED_CALL_TYPE -> mixChecked = checkValue(msg.callType.toString()) FILED_MSG_CONTENT, FILED_INFORM_CONTENT -> mixChecked = checkValue(msg.content) FILED_MULTI_MATCH -> mixChecked = RuleLineUtils.checkRuleLines(msg, this.value) 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 7e970221..4aa9f076 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 @@ -130,18 +130,19 @@ class RulesEditFragment : BaseFragment(), View.OnClic initAppSpinner() //监听已安装App信息列表加载完成事件 LiveEventBus.get(EVENT_LOAD_APP_LIST, String::class.java).observeStickyForever(appListObserver) - binding!!.layoutUid.visibility = View.VISIBLE } "call" -> { titleBar?.setTitle(R.string.call_rule) binding!!.rbContent.visibility = View.GONE binding!!.rbPackageName.visibility = View.GONE + binding!!.rbUid.visibility = View.GONE 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 @@ -158,18 +159,18 @@ class RulesEditFragment : BaseFragment(), View.OnClic binding!!.spCallType.selectedIndex = callTypeIndex } binding!!.spCallType.selectedIndex = callTypeIndex - binding!!.layoutUid.visibility = View.GONE } else -> { titleBar?.setTitle(R.string.sms_rule) binding!!.rbCallType.visibility = View.GONE 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 - binding!!.layoutUid.visibility = View.GONE } } @@ -189,6 +190,7 @@ class RulesEditFragment : BaseFragment(), View.OnClic 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) @@ -320,6 +322,11 @@ class RulesEditFragment : BaseFragment(), View.OnClic 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 @@ -595,7 +602,6 @@ class RulesEditFragment : BaseFragment(), View.OnClic binding!!.sbStatus.isChecked = rule.statusChecked silentPeriodStart = rule.silentPeriodStart silentPeriodEnd = rule.silentPeriodEnd - binding!!.etUid.setText(rule.uid.toString()) //初始化发送通道下拉框 initSenderSpinner() } @@ -612,6 +618,7 @@ class RulesEditFragment : BaseFragment(), View.OnClic R.id.rb_phone -> FILED_PHONE_NUM R.id.rb_call_type -> FILED_CALL_TYPE R.id.rb_package_name -> FILED_PACKAGE_NAME + R.id.rb_uid -> FILED_UID R.id.rb_inform_content -> FILED_INFORM_CONTENT R.id.rb_multi_match -> FILED_MULTI_MATCH else -> FILED_TRANSPOND_ALL @@ -662,11 +669,6 @@ class RulesEditFragment : BaseFragment(), View.OnClic //if (status == STATUS_OFF) { // throw Exception(getString(R.string.invalid_rule_status)) //} - val uidText = binding!!.etUid.text - var uid = 0 - if(uidText!=null&& uidText.isNotEmpty()){ - uid = uidText.toString().toInt() - } return Rule( ruleId, ruleType, @@ -682,8 +684,7 @@ class RulesEditFragment : BaseFragment(), View.OnClic senderListSelected, senderLogic, silentPeriodStart, - silentPeriodEnd, - uid + silentPeriodEnd ) } diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/Constants.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/Constants.kt index 31fdae5f..4c134ddd 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/Constants.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/Constants.kt @@ -1,4 +1,4 @@ -@file:Suppress("unused") +@file:Suppress("unused", "DEPRECATION") package com.idormy.sms.forwarder.utils @@ -104,6 +104,7 @@ const val FILED_TRANSPOND_ALL = "transpond_all" const val FILED_PHONE_NUM = "phone_num" const val FILED_CALL_TYPE = "call_type" const val FILED_PACKAGE_NAME = "package_name" +const val FILED_UID = "uid" const val FILED_MSG_CONTENT = "msg_content" const val FILED_INFORM_CONTENT = "inform_content" const val FILED_MULTI_MATCH = "multi_match" @@ -139,6 +140,7 @@ val FILED_MAP = object : HashMap() { put("package_name", getString(R.string.rule_package_name)) put("inform_content", getString(R.string.rule_inform_content)) put("call_type", getString(R.string.rule_call_type)) + put("uid", getString(R.string.rule_uid)) } } val CHECK_MAP = object : HashMap() { @@ -180,6 +182,7 @@ val BARK_ENCRYPTION_ALGORITHM_MAP = mapOf( "AES256/CBC/PKCS7Padding" to "AES256/CBC/PKCS7Padding", "AES256/ECB/PKCS7Padding" to "AES256/ECB/PKCS7Padding", ) + //通话类型:1.来电挂机 2.去电挂机 3.未接来电 4.来电提醒 5.来电接通 6.去电拨出 val CALL_TYPE_MAP = mapOf( //"0" to getString(R.string.unknown_call), @@ -470,4 +473,36 @@ var CLIENT_FRAGMENT_LIST = listOf( CoreAnim.slide, R.drawable.icon_api_battery_query ), +) + +//自动任务 +var TASK_FRAGMENT_LIST = listOf( + PageInfo( + getString(R.string.dingtalk_robot), + "com.idormy.sms.forwarder.fragment.senders.DingtalkGroupRobotFragment", + "{\"\":\"\"}", + CoreAnim.slide, + R.drawable.icon_dingtalk + ), + PageInfo( + getString(R.string.email), + "com.idormy.sms.forwarder.fragment.senders.EmailFragment", + "{\"\":\"\"}", + CoreAnim.slide, + R.drawable.icon_email + ), + PageInfo( + getString(R.string.bark), + "com.idormy.sms.forwarder.fragment.senders.BarkFragment", + "{\"\":\"\"}", + CoreAnim.slide, + R.drawable.icon_bark + ), + PageInfo( + getString(R.string.webhook), + "com.idormy.sms.forwarder.fragment.senders.WebhookFragment", + "{\"\":\"\"}", + CoreAnim.slide, + R.drawable.icon_webhook + ), ) \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/RuleLine.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/RuleLine.kt index 3a183d72..ef7835e6 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/RuleLine.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/RuleLine.kt @@ -15,6 +15,7 @@ class RuleLine(line: String, lineNum: Int, beforeRuleLine: RuleLine?) { val FILED_PHONE_NUM: String = getString(R.string.FILED_PHONE_NUM) val FILED_MSG_CONTENT: String = getString(R.string.FILED_MSG_CONTENT) val FILED_PACKAGE_NAME: String = getString(R.string.FILED_PACKAGE_NAME) + val FILED_UID: String = getString(R.string.FILED_UID) val FILED_INFORM_TITLE: String = getString(R.string.FILED_INFORM_TITLE) val FILED_INFORM_CONTENT: String = getString(R.string.FILED_INFORM_CONTENT) val FILED_SIM_SLOT_INFO: String = getString(R.string.FILED_SIM_SLOT_INFO) @@ -59,6 +60,7 @@ class RuleLine(line: String, lineNum: Int, beforeRuleLine: RuleLine?) { FILED_LIST.add(FILED_INFORM_TITLE) FILED_LIST.add(FILED_SIM_SLOT_INFO) FILED_LIST.add(FILED_CALL_TYPE) + FILED_LIST.add(FILED_UID) } init { @@ -101,6 +103,7 @@ class RuleLine(line: String, lineNum: Int, beforeRuleLine: RuleLine?) { var mixChecked = false when (field) { FILED_PHONE_NUM, FILED_PACKAGE_NAME -> mixChecked = checkValue(msg.from) + FILED_UID -> mixChecked = checkValue(msg.uid.toString()) FILED_CALL_TYPE -> mixChecked = checkValue(msg.callType.toString()) FILED_MSG_CONTENT, FILED_INFORM_CONTENT -> mixChecked = checkValue(msg.content) FILED_INFORM_TITLE, FILED_SIM_SLOT_INFO -> mixChecked = checkValue(msg.simInfo) @@ -123,15 +126,19 @@ class RuleLine(line: String, lineNum: Int, beforeRuleLine: RuleLine?) { CHECK_CONTAIN -> if (msgValue != null) { checked = msgValue.contains(value) } + CHECK_NOT_CONTAIN -> if (msgValue != null) { checked = !msgValue.contains(value) } + CHECK_START_WITH -> if (msgValue != null) { checked = msgValue.startsWith(value) } + CHECK_END_WITH -> if (msgValue != null) { checked = msgValue.endsWith(value) } + CHECK_REGEX -> if (msgValue != null) { try { //checked = Pattern.matches(this.value, msgValue); @@ -149,6 +156,7 @@ class RuleLine(line: String, lineNum: Int, beforeRuleLine: RuleLine?) { logg("Pattern: " + e.pattern) } } + else -> {} } logg("checkValue $msgValue $check $value checked:$checked") diff --git a/app/src/main/res/drawable/custom_radio_button.xml b/app/src/main/res/drawable/custom_radio_button.xml new file mode 100644 index 00000000..d7f8906e --- /dev/null +++ b/app/src/main/res/drawable/custom_radio_button.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/custom_radio_button_checked.xml b/app/src/main/res/drawable/custom_radio_button_checked.xml new file mode 100644 index 00000000..4e6e0509 --- /dev/null +++ b/app/src/main/res/drawable/custom_radio_button_checked.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/custom_radio_button_unchecked.xml b/app/src/main/res/drawable/custom_radio_button_unchecked.xml new file mode 100644 index 00000000..762e2b3c --- /dev/null +++ b/app/src/main/res/drawable/custom_radio_button_unchecked.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/fragment_rules_edit.xml b/app/src/main/res/layout/fragment_rules_edit.xml index f3e540d1..c08ffacb 100644 --- a/app/src/main/res/layout/fragment_rules_edit.xml +++ b/app/src/main/res/layout/fragment_rules_edit.xml @@ -78,8 +78,8 @@ - - - - - - - + + + + + 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 bb416d5c..44380227 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 @@ -175,25 +175,19 @@ diff --git a/app/src/main/res/layout/fragment_senders_feishu.xml b/app/src/main/res/layout/fragment_senders_feishu.xml index 418ccf00..f8fc7fb2 100644 --- a/app/src/main/res/layout/fragment_senders_feishu.xml +++ b/app/src/main/res/layout/fragment_senders_feishu.xml @@ -103,21 +103,18 @@ 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 6630122a..5b43cc6b 100644 --- a/app/src/main/res/layout/fragment_senders_feishu_app.xml +++ b/app/src/main/res/layout/fragment_senders_feishu_app.xml @@ -133,21 +133,18 @@ diff --git a/app/src/main/res/layout/fragment_senders_pushplus.xml b/app/src/main/res/layout/fragment_senders_pushplus.xml index 34ffbc94..fda1539b 100644 --- a/app/src/main/res/layout/fragment_senders_pushplus.xml +++ b/app/src/main/res/layout/fragment_senders_pushplus.xml @@ -84,20 +84,14 @@ + android:text="@string/pushplus_plus" /> + style="@style/rg_rb_style" + android:text="@string/pushplus_hxtrip" /> diff --git a/app/src/main/res/layout/fragment_senders_socket.xml b/app/src/main/res/layout/fragment_senders_socket.xml index cab418b6..9de65201 100644 --- a/app/src/main/res/layout/fragment_senders_socket.xml +++ b/app/src/main/res/layout/fragment_senders_socket.xml @@ -63,32 +63,25 @@ + android:text="@string/mqtt" /> + style="@style/rg_rb_style" + android:text="@string/tcp" /> + style="@style/rg_rb_style" + android:text="@string/udp" /> @@ -357,24 +350,19 @@ + style="@style/rg_rb_style" + android:text="@string/tcp" /> + style="@style/rg_rb_style" + android:text="@string/ssl" /> diff --git a/app/src/main/res/layout/fragment_senders_telegram.xml b/app/src/main/res/layout/fragment_senders_telegram.xml index 37f6d3a9..363b2c98 100644 --- a/app/src/main/res/layout/fragment_senders_telegram.xml +++ b/app/src/main/res/layout/fragment_senders_telegram.xml @@ -83,22 +83,19 @@ diff --git a/app/src/main/res/layout/fragment_senders_webhook.xml b/app/src/main/res/layout/fragment_senders_webhook.xml index 30da94cb..b26624d6 100644 --- a/app/src/main/res/layout/fragment_senders_webhook.xml +++ b/app/src/main/res/layout/fragment_senders_webhook.xml @@ -63,50 +63,30 @@ + android:text="@string/post" /> + style="@style/rg_rb_style" + android:text="@string/get" /> + style="@style/rg_rb_style" + android:text="@string/put" /> + style="@style/rg_rb_style" + android:text="@string/patch" /> diff --git a/app/src/main/res/layout/fragment_senders_wework_robot.xml b/app/src/main/res/layout/fragment_senders_wework_robot.xml index 78cd8979..309de9db 100644 --- a/app/src/main/res/layout/fragment_senders_wework_robot.xml +++ b/app/src/main/res/layout/fragment_senders_wework_robot.xml @@ -91,22 +91,19 @@ diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 647c2958..dabb548b 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -381,6 +381,7 @@ Tip: Insert labels as needed; Leave blank to apply default template Phone PackageName + UID SMS InformTitle InformContent @@ -621,6 +622,7 @@ Package Name Inform Content Call Type + UID Card When Fw. @@ -838,6 +840,7 @@ PHONE_NUM MSG_CONTENT PACKAGE_NAME + UID INFORM_TITLE INFORM_CONTENT CARD_SLOT diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d975b302..6d10f9b7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -382,6 +382,7 @@ Tip:按需插入内容标签;留空使用默认模版 来源号码 APP包名 + UID 短信内容 通知标题 通知内容 @@ -622,6 +623,7 @@ APP包名 通知内容 通话类型 + UID 转发到 @@ -839,6 +841,7 @@ 手机号 短信内容 APP包名 + UID 通知标题 通知内容 卡槽信息 diff --git a/app/src/main/res/values/styles_widget.xml b/app/src/main/res/values/styles_widget.xml index fd1b7ab0..d28e8cad 100644 --- a/app/src/main/res/values/styles_widget.xml +++ b/app/src/main/res/values/styles_widget.xml @@ -175,20 +175,30 @@ \ No newline at end of file