From e4432cb0372f587f64cc959354aa80341b7f8a81 Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Thu, 14 Mar 2024 17:49:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E5=A4=9A=E8=AF=AD?= =?UTF-8?q?=E8=A8=80=E5=88=87=E6=8D=A2=E6=97=B6=E6=9E=9A=E4=B8=BE=E5=B8=B8?= =?UTF-8?q?=E9=87=8F=E8=87=AA=E5=8A=A8=E5=88=87=E6=8D=A2=E8=AF=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/idormy/sms/forwarder/App.kt | 137 +++++++++++++++-- .../forwarder/adapter/RulePagingAdapter.kt | 2 +- .../forwarder/adapter/RuleRecyclerAdapter.kt | 2 +- .../sms/forwarder/database/entity/Rule.kt | 139 +++++++----------- .../idormy/sms/forwarder/entity/MsgInfo.kt | 14 +- .../sms/forwarder/fragment/LogsFragment.kt | 10 +- .../forwarder/fragment/RulesEditFragment.kt | 12 +- .../forwarder/fragment/SettingsFragment.kt | 2 +- .../forwarder/fragment/action/RuleFragment.kt | 3 +- .../fragment/condition/MsgFragment.kt | 12 +- .../fragment/senders/BarkFragment.kt | 16 +- .../sms/forwarder/receiver/CallReceiver.kt | 12 +- .../sms/forwarder/workers/ActionWorker.kt | 2 +- app/src/main/res/values-en/strings.xml | 12 +- 14 files changed, 203 insertions(+), 172 deletions(-) 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 b312b812..32b11e6b 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/App.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/App.kt @@ -18,10 +18,16 @@ import com.gyf.cactus.Cactus import com.gyf.cactus.callback.CactusCallback import com.gyf.cactus.ext.cactus import com.hjq.language.MultiLanguages +import com.hjq.language.OnLanguageListener import com.idormy.sms.forwarder.activity.MainActivity import com.idormy.sms.forwarder.core.Core import com.idormy.sms.forwarder.database.AppDatabase -import com.idormy.sms.forwarder.database.repository.* +import com.idormy.sms.forwarder.database.repository.FrpcRepository +import com.idormy.sms.forwarder.database.repository.LogsRepository +import com.idormy.sms.forwarder.database.repository.MsgRepository +import com.idormy.sms.forwarder.database.repository.RuleRepository +import com.idormy.sms.forwarder.database.repository.SenderRepository +import com.idormy.sms.forwarder.database.repository.TaskRepository import com.idormy.sms.forwarder.entity.SimInfo import com.idormy.sms.forwarder.receiver.BatteryReceiver import com.idormy.sms.forwarder.receiver.CactusReceiver @@ -30,7 +36,17 @@ import com.idormy.sms.forwarder.receiver.NetworkChangeReceiver import com.idormy.sms.forwarder.service.ForegroundService import com.idormy.sms.forwarder.service.HttpServerService import com.idormy.sms.forwarder.service.LocationService -import com.idormy.sms.forwarder.utils.* +import com.idormy.sms.forwarder.utils.AppInfo +import com.idormy.sms.forwarder.utils.CactusSave +import com.idormy.sms.forwarder.utils.FRONT_CHANNEL_ID +import com.idormy.sms.forwarder.utils.FRONT_CHANNEL_NAME +import com.idormy.sms.forwarder.utils.FRONT_NOTIFY_ID +import com.idormy.sms.forwarder.utils.FRPC_LIB_VERSION +import com.idormy.sms.forwarder.utils.HistoryUtils +import com.idormy.sms.forwarder.utils.HttpServerUtils +import com.idormy.sms.forwarder.utils.Log +import com.idormy.sms.forwarder.utils.SettingUtils +import com.idormy.sms.forwarder.utils.SharedPreference import com.idormy.sms.forwarder.utils.sdkinit.UMengInit import com.idormy.sms.forwarder.utils.sdkinit.XBasicLibInit import com.idormy.sms.forwarder.utils.sdkinit.XUpdateInit @@ -42,13 +58,16 @@ import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.SupervisorJob import java.io.BufferedWriter import java.io.File import java.io.FileWriter import java.io.IOException import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale +import java.util.TimeZone import java.util.concurrent.TimeUnit @Suppress("DEPRECATION") @@ -69,6 +88,15 @@ class App : Application(), CactusCallback, Configuration.Provider by Core { @SuppressLint("StaticFieldLeak") lateinit var context: Context + //通话类型:1.来电挂机 2.去电挂机 3.未接来电 4.来电提醒 5.来电接通 6.去电拨出 + var CALL_TYPE_MAP: MutableMap = mutableMapOf() + var FILED_MAP: MutableMap = mutableMapOf() + var CHECK_MAP: MutableMap = mutableMapOf() + var SIM_SLOT_MAP: MutableMap = mutableMapOf() + var FORWARD_STATUS_MAP: MutableMap = mutableMapOf() + var BARK_LEVEL_MAP: MutableMap = mutableMapOf() + var BARK_ENCRYPTION_ALGORITHM_MAP: MutableMap = mutableMapOf() + //已插入SIM卡信息 var SimInfoList: MutableMap = mutableMapOf() @@ -96,6 +124,9 @@ class App : Application(), CactusCallback, Configuration.Provider by Core { //Frpclib是否已经初始化 var FrpclibInited = false + + //是否需要在拼接字符串时添加空格 + var isNeedSpaceBetweenWords = false } override fun attachBaseContext(base: Context) { @@ -275,21 +306,24 @@ class App : Application(), CactusCallback, Configuration.Provider by Core { // 初始化语种切换框架 MultiLanguages.init(this) // 设置语种变化监听器 - /*MultiLanguages.setOnLanguageListener(object : OnLanguageListener { + MultiLanguages.setOnLanguageListener(object : OnLanguageListener { override fun onAppLocaleChange(oldLocale: Locale, newLocale: Locale) { // 注意:只有setAppLanguage时触发,clearAppLanguage时不触发 Log.i(TAG, "监听到应用切换了语种,旧语种:$oldLocale,新语种:$newLocale") + switchLanguage(newLocale) } override fun onSystemLocaleChange(oldLocale: Locale, newLocale: Locale) { - //val isFlowSystem = MultiLanguages.isSystemLanguage(context) //取值不对,一直是false - val isFlowSystem = SettingUtils.isFlowSystemLanguage + Log.i(TAG, "监听到系统切换了语种,旧语种:$oldLocale,新语种:$newLocale") + switchLanguage(newLocale) + /*val isFlowSystem = SettingUtils.isFlowSystemLanguage //MultiLanguages.isSystemLanguage(context)取值不对,一直是false Log.i(TAG, "监听到系统切换了语种,旧语种:$oldLocale,新语种:$newLocale,是否跟随系统:$isFlowSystem") if (isFlowSystem) { CommonUtils.switchLanguage(oldLocale, newLocale) - } + }*/ } - })*/ + }) + switchLanguage(MultiLanguages.getAppLanguage(this)) } @SuppressLint("CheckResult") @@ -327,4 +361,89 @@ class App : Application(), CactusCallback, Configuration.Provider by Core { } } + //多语言切换时枚举常量自动切换语言 + private fun switchLanguage(newLocale: Locale) { + isNeedSpaceBetweenWords = !newLocale.language.contains("zh") + + CALL_TYPE_MAP.clear() + CALL_TYPE_MAP.putAll( + mapOf( + //"0" to getString(R.string.unknown_call), + "1" to getString(R.string.incoming_call_ended), + "2" to getString(R.string.outgoing_call_ended), + "3" to getString(R.string.missed_call), + "4" to getString(R.string.incoming_call_received), + "5" to getString(R.string.incoming_call_answered), + "6" to getString(R.string.outgoing_call_started), + ) + ) + + FILED_MAP.clear() + FILED_MAP.putAll( + mapOf( + "transpond_all" to getString(R.string.rule_transpond_all), + "phone_num" to getString(R.string.rule_phone_num), + "msg_content" to getString(R.string.rule_msg_content), + "multi_match" to getString(R.string.rule_multi_match), + "package_name" to getString(R.string.rule_package_name), + "inform_content" to getString(R.string.rule_inform_content), + "call_type" to getString(R.string.rule_call_type), + "uid" to getString(R.string.rule_uid), + ) + ) + + CHECK_MAP.clear() + CHECK_MAP.putAll( + mapOf( + "is" to getString(R.string.rule_is), + "notis" to getString(R.string.rule_notis), + "contain" to getString(R.string.rule_contain), + "startwith" to getString(R.string.rule_startwith), + "endwith" to getString(R.string.rule_endwith), + "notcontain" to getString(R.string.rule_notcontain), + "regex" to getString(R.string.rule_regex), + ) + ) + + SIM_SLOT_MAP.clear() + SIM_SLOT_MAP.putAll( + mapOf( + "ALL" to getString(R.string.rule_any), + "SIM1" to "SIM1", + "SIM2" to "SIM2", + ) + ) + + FORWARD_STATUS_MAP.clear() + FORWARD_STATUS_MAP.putAll( + mapOf( + 0 to getString(R.string.failed), + 1 to getString(R.string.processing), + 2 to getString(R.string.success), + ) + ) + + BARK_LEVEL_MAP.clear() + BARK_LEVEL_MAP.putAll( + mapOf( + "active" to getString(R.string.bark_level_active), + "timeSensitive" to getString(R.string.bark_level_timeSensitive), + "passive" to getString(R.string.bark_level_passive) + ) + ) + + BARK_ENCRYPTION_ALGORITHM_MAP.clear() + BARK_ENCRYPTION_ALGORITHM_MAP.putAll( + mapOf( + "none" to getString(R.string.bark_encryption_algorithm_none), + "AES128/CBC/PKCS7Padding" to "AES128/CBC/PKCS7Padding", + "AES128/ECB/PKCS7Padding" to "AES128/ECB/PKCS7Padding", + "AES192/CBC/PKCS7Padding" to "AES192/CBC/PKCS7Padding", + "AES192/ECB/PKCS7Padding" to "AES192/ECB/PKCS7Padding", + "AES256/CBC/PKCS7Padding" to "AES256/CBC/PKCS7Padding", + "AES256/ECB/PKCS7Padding" to "AES256/ECB/PKCS7Padding", + ) + ) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/RulePagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/RulePagingAdapter.kt index e0a69bbc..6f326e1e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/RulePagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/RulePagingAdapter.kt @@ -29,7 +29,7 @@ class RulePagingAdapter(private val itemClickListener: OnItemClickListener) : Pa if (item != null) { holder.binding.ivRuleImage.setImageResource(item.imageId) holder.binding.ivRuleStatus.setImageResource(item.statusImageId) - holder.binding.tvRuleMatch.text = item.ruleMatch + holder.binding.tvRuleMatch.text = item.getName(false) holder.binding.layoutSenders.removeAllViews() for (sender in item.senderList) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/RuleRecyclerAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/RuleRecyclerAdapter.kt index c9ad52c6..ffe15080 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/RuleRecyclerAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/RuleRecyclerAdapter.kt @@ -78,7 +78,7 @@ class RuleRecyclerAdapter( } image.setImageResource(icon) status.setImageResource(rule.statusImageId) - title.text = rule.name + title.text = rule.getName() } override fun onClick(v: View?) { 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 d2d0dfd7..9a966f75 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 @@ -2,6 +2,11 @@ package com.idormy.sms.forwarder.database.entity import android.os.Parcelable import androidx.room.* +import com.idormy.sms.forwarder.App +import com.idormy.sms.forwarder.App.Companion.CALL_TYPE_MAP +import com.idormy.sms.forwarder.App.Companion.CHECK_MAP +import com.idormy.sms.forwarder.App.Companion.FILED_MAP +import com.idormy.sms.forwarder.App.Companion.SIM_SLOT_MAP import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.database.ext.ConvertersSenderList import com.idormy.sms.forwarder.entity.MsgInfo @@ -54,115 +59,79 @@ data class Rule( companion object { val TAG: String = Rule::class.java.simpleName - //通话类型:1.来电挂机 2.去电挂机 3.未接来电 4.来电提醒 5.来电接通 6.去电拨出 - val CALL_TYPE_MAP = mapOf( - //"0" to getString(R.string.unknown_call), - "1" to getString(R.string.incoming_call_ended), - "2" to getString(R.string.outgoing_call_ended), - "3" to getString(R.string.missed_call), - "4" to getString(R.string.incoming_call_received), - "5" to getString(R.string.incoming_call_answered), - "6" to getString(R.string.outgoing_call_started), - ) - val FILED_MAP = object : HashMap() { - init { - put("transpond_all", getString(R.string.rule_transpond_all)) - put("phone_num", getString(R.string.rule_phone_num)) - put("msg_content", getString(R.string.rule_msg_content)) - put("multi_match", getString(R.string.rule_multi_match)) - 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() { - init { - put("is", getString(R.string.rule_is)) - put("notis", getString(R.string.rule_notis)) - put("contain", getString(R.string.rule_contain)) - put("startwith", getString(R.string.rule_startwith)) - put("endwith", getString(R.string.rule_endwith)) - put("notcontain", getString(R.string.rule_notcontain)) - put("regex", getString(R.string.rule_regex)) - } - } - val SIM_SLOT_MAP = object : HashMap() { - init { - put("ALL", getString(R.string.rule_any)) - put("SIM1", "SIM1") - put("SIM2", "SIM2") - } - } - - fun getRuleMatch(filed: String?, check: String?, value: String?, simSlot: String?): Any { + fun getRuleMatch(filed: String?, check: String?, value: String?, simSlot: String?, senderList: List? = null): String { + val blank = if (App.isNeedSpaceBetweenWords) " " else "" val sb = StringBuilder() - sb.append(SIM_SLOT_MAP[simSlot]).append(getString(R.string.rule_card)) + sb.append(SIM_SLOT_MAP[simSlot]).append(blank).append(getString(R.string.rule_card)).append(blank) when (filed) { - null, FILED_TRANSPOND_ALL -> { - sb.append(getString(R.string.rule_all_fw_to)) - } + null, FILED_TRANSPOND_ALL -> sb.append(getString(R.string.rule_all_fw_to)) + FILED_CALL_TYPE -> sb.append(getString(R.string.rule_when)) + .append(blank) + .append(FILED_MAP[filed]) + .append(blank) + .append(CHECK_MAP[check]) + .append(blank) + .append(CALL_TYPE_MAP[value]) + .append(blank) + .append(getString(R.string.rule_fw_to)) - FILED_CALL_TYPE -> { - sb.append(getString(R.string.rule_when)).append(FILED_MAP[filed]).append(CHECK_MAP[check]).append(CALL_TYPE_MAP[value]).append(getString(R.string.rule_fw_to)) - } - - else -> { - sb.append(getString(R.string.rule_when)).append(FILED_MAP[filed]).append(CHECK_MAP[check]).append(value).append(getString(R.string.rule_fw_to)) - } + else -> sb.append(getString(R.string.rule_when)) + .append(blank) + .append(FILED_MAP[filed]) + .append(blank) + .append(CHECK_MAP[check]) + .append(blank) + .append(value) + .append(blank) + .append(getString(R.string.rule_fw_to)) + } + if (!senderList.isNullOrEmpty()) { + sb.append(blank).append(senderList.joinToString(",") { it.name }) } return sb.toString() } } - val name: String - get() { - val sb = StringBuilder() - if (type == "call" || type == "sms") sb.append(SIM_SLOT_MAP[simSlot].toString()).append(getString(R.string.rule_card)) - when (filed) { - FILED_TRANSPOND_ALL -> sb.append(getString(R.string.rule_all_fw_to)) - FILED_CALL_TYPE -> sb.append(getString(R.string.rule_when) + FILED_MAP[filed] + CHECK_MAP[check] + CALL_TYPE_MAP[value] + getString(R.string.rule_fw_to)) - else -> sb.append(getString(R.string.rule_when) + FILED_MAP[filed] + CHECK_MAP[check] + value + getString(R.string.rule_fw_to)) - } - sb.append(senderList.joinToString(",") { it.name }) - return sb.toString() - } - val description: String get() { - val card = SIM_SLOT_MAP[simSlot].toString() + getString(R.string.rule_card) + val blank = if (App.isNeedSpaceBetweenWords) " " else "" + val card = SIM_SLOT_MAP[simSlot].toString() + blank + getString(R.string.rule_card) + blank val sb = StringBuilder() when (type) { "app" -> sb.append(getString(R.string.task_app_when)) "call" -> sb.append(String.format(getString(R.string.task_call_when), card)) "sms" -> sb.append(String.format(getString(R.string.task_sms_when), card)) } + sb.append(blank) when (filed) { FILED_TRANSPOND_ALL -> sb.append("") - FILED_CALL_TYPE -> sb.append(getString(R.string.rule_when) + FILED_MAP[filed] + CHECK_MAP[check] + CALL_TYPE_MAP[value]) - else -> sb.append(getString(R.string.rule_when) + FILED_MAP[filed] + CHECK_MAP[check] + value) + FILED_CALL_TYPE -> sb.append(getString(R.string.rule_when)) + .append(blank) + .append(FILED_MAP[filed]) + .append(blank) + .append(CHECK_MAP[check]) + .append(blank) + .append(CALL_TYPE_MAP[value]) + + else -> sb.append(getString(R.string.rule_when)) + .append(blank) + .append(FILED_MAP[filed]) + .append(blank) + .append(CHECK_MAP[check]) + .append(blank) + .append(value) } return sb.toString() } - val ruleMatch: String - get() { - val simStr = if ("app" == type) "" else SIM_SLOT_MAP[simSlot].toString() + getString(R.string.rule_card) - return when (filed) { - FILED_TRANSPOND_ALL -> { - simStr + getString(R.string.rule_all_fw_to) - } - - FILED_CALL_TYPE -> { - simStr + getString(R.string.rule_when) + FILED_MAP[filed] + CHECK_MAP[check] + CALL_TYPE_MAP[value] + getString(R.string.rule_fw_to) - } - - else -> { - simStr + getString(R.string.rule_when) + FILED_MAP[filed] + CHECK_MAP[check] + value + getString(R.string.rule_fw_to) - } - } + fun getName(appendSenderList: Boolean = true): String { + return if (appendSenderList) { + getRuleMatch(filed, check, value, simSlot, senderList) + } else { + getRuleMatch(filed, check, value, simSlot, null) } + } val statusChecked: Boolean get() = status != STATUS_OFF diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt index a9072e55..f4b44815 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt @@ -4,6 +4,7 @@ import android.annotation.SuppressLint import android.text.TextUtils import com.google.gson.Gson import com.idormy.sms.forwarder.App +import com.idormy.sms.forwarder.App.Companion.CALL_TYPE_MAP import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.utils.AppUtils import com.idormy.sms.forwarder.utils.BatteryUtils @@ -32,17 +33,6 @@ data class MsgInfo( var uid: Int = 0, //APP通知的UID ) : Serializable { - //通话类型:1.来电挂机 2.去电挂机 3.未接来电 4.来电提醒 5.来电接通 6.去电拨出 - private val callTypeMap = mapOf( - //"0" to getString(R.string.unknown_call), - "1" to getString(R.string.incoming_call_ended), - "2" to getString(R.string.outgoing_call_ended), - "3" to getString(R.string.missed_call), - "4" to getString(R.string.incoming_call_received), - "5" to getString(R.string.incoming_call_answered), - "6" to getString(R.string.outgoing_call_started), - ) - val titleForSend = getTitleForSend() val smsVoForSend = getContentForSend() @@ -105,7 +95,7 @@ data class MsgInfo( .replaceTag(getString(R.string.tag_current_time), SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date()), needJson) .replaceTag(getString(R.string.tag_device_name), extraDeviceMark.trim(), needJson) .replaceTag(getString(R.string.tag_app_version), AppUtils.getAppVersionName(), needJson) - .replaceTag(getString(R.string.tag_call_type), callTypeMap[callType.toString()] ?: getString(R.string.unknown_call), needJson) + .replaceTag(getString(R.string.tag_call_type), CALL_TYPE_MAP[callType.toString()] ?: getString(R.string.unknown_call), needJson) .replaceTag(getString(R.string.tag_ipv4), TaskUtils.ipv4, needJson) .replaceTag(getString(R.string.tag_ipv6), TaskUtils.ipv6, needJson) .replaceTag(getString(R.string.tag_battery_pct), "%.2f".format(TaskUtils.batteryPct), needJson) diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt index 48a02105..d894433d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt @@ -9,6 +9,7 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.RecyclerView.RecycledViewPool import com.alibaba.android.vlayout.VirtualLayoutManager +import com.idormy.sms.forwarder.App.Companion.FORWARD_STATUS_MAP import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.activity.MainActivity import com.idormy.sms.forwarder.adapter.MsgPagingAdapter @@ -39,7 +40,7 @@ import io.reactivex.schedulers.Schedulers import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import java.text.SimpleDateFormat -import java.util.* +import java.util.Locale @Suppress("PrivatePropertyName") @Page(name = "转发日志") @@ -50,13 +51,6 @@ class LogsFragment : BaseFragment(), MsgPagingAdapter.OnIt private var adapter = MsgPagingAdapter(this) private val viewModel by viewModels { BaseViewModelFactory(context) } private var currentType: String = "sms" - private val FORWARD_STATUS_MAP = object : HashMap() { - init { - put(0, getString(R.string.failed)) - put(1, getString(R.string.processing)) - put(2, getString(R.string.success)) - } - } override fun viewBindingInflate( inflater: LayoutInflater, 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 9fdf1de4..05182112 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 @@ -17,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView import androidx.work.OneTimeWorkRequestBuilder import androidx.work.WorkManager import com.idormy.sms.forwarder.App +import com.idormy.sms.forwarder.App.Companion.CALL_TYPE_MAP import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.adapter.SenderRecyclerAdapter import com.idormy.sms.forwarder.adapter.base.ItemMoveCallback @@ -96,17 +97,6 @@ class RulesEditFragment : BaseFragment(), View.OnClic private var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } - //通话类型:1.来电挂机 2.去电挂机 3.未接来电 4.来电提醒 5.来电接通 6.去电拨出 - private val CALL_TYPE_MAP = mapOf( - //"0" to getString(R.string.unknown_call), - "1" to getString(R.string.incoming_call_ended), - "2" to getString(R.string.outgoing_call_ended), - "3" to getString(R.string.missed_call), - "4" to getString(R.string.incoming_call_received), - "5" to getString(R.string.incoming_call_answered), - "6" to getString(R.string.outgoing_call_started), - ) - private var callType = 1 private var callTypeIndex = 0 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 72bed9f7..59e9ef15 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 @@ -1065,7 +1065,7 @@ class SettingsFragment : BaseFragment(), View.OnClickL when (checkedId) { R.id.rb_main_language_auto -> { // 只为了触发onAppLocaleChange - // MultiLanguages.setAppLanguage(context, newLang) + MultiLanguages.setAppLanguage(context, newLang) // SettingUtils.isFlowSystemLanguage = true // 跟随系统 MultiLanguages.clearAppLanguage(context) diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/RuleFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/RuleFragment.kt index a062ccee..1634ac83 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/RuleFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/RuleFragment.kt @@ -256,7 +256,8 @@ class RuleFragment : BaseFragment(), View.OnCli ruleSpinnerList.clear() ruleListAll = ruleList as MutableList for (rule in ruleList) { - val name = if (rule.name.length > 20) rule.name.substring(0, 19) else rule.name + var name = rule.getName() + if (name.length > 20) name = name.substring(0, 19) val icon = when (rule.type) { "sms" -> R.drawable.auto_task_icon_sms "call" -> R.drawable.auto_task_icon_incall diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/MsgFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/MsgFragment.kt index be56e0a1..578c646d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/MsgFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/MsgFragment.kt @@ -13,6 +13,7 @@ import androidx.work.OneTimeWorkRequestBuilder import androidx.work.WorkManager import com.google.gson.Gson import com.idormy.sms.forwarder.App +import com.idormy.sms.forwarder.App.Companion.CALL_TYPE_MAP import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.adapter.spinner.AppListAdapterItem import com.idormy.sms.forwarder.adapter.spinner.AppListSpinnerAdapter @@ -73,17 +74,6 @@ class MsgFragment : BaseFragment(), View.OnCl private val TAG: String = MsgFragment::class.java.simpleName private var titleBar: TitleBar? = null - //通话类型:1.来电挂机 2.去电挂机 3.未接来电 4.来电提醒 5.来电接通 6.去电拨出 - private val CALL_TYPE_MAP = mapOf( - //"0" to getString(R.string.unknown_call), - "1" to getString(R.string.incoming_call_ended), - "2" to getString(R.string.outgoing_call_ended), - "3" to getString(R.string.missed_call), - "4" to getString(R.string.incoming_call_received), - "5" to getString(R.string.incoming_call_answered), - "6" to getString(R.string.outgoing_call_started), - ) - private var callType = 1 private var callTypeIndex = 0 private var resultCode: Int = TASK_CONDITION_SMS diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/BarkFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/BarkFragment.kt index 3d674f52..c5c3b67a 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/BarkFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/BarkFragment.kt @@ -7,6 +7,8 @@ import android.view.ViewGroup import android.widget.EditText import androidx.fragment.app.viewModels import com.google.gson.Gson +import com.idormy.sms.forwarder.App.Companion.BARK_ENCRYPTION_ALGORITHM_MAP +import com.idormy.sms.forwarder.App.Companion.BARK_LEVEL_MAP import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.core.Core @@ -53,20 +55,6 @@ class BarkFragment : BaseFragment(), View.OnClickLi private var mCountDownHelper: CountDownButtonHelper? = null private var barkLevel: String = "active" //通知级别 private var transformation: String = "none" //加密算法 - private val BARK_LEVEL_MAP = mapOf( - "active" to getString(R.string.bark_level_active), - "timeSensitive" to getString(R.string.bark_level_timeSensitive), - "passive" to getString(R.string.bark_level_passive) - ) - private val BARK_ENCRYPTION_ALGORITHM_MAP = mapOf( - "none" to getString(R.string.bark_encryption_algorithm_none), - "AES128/CBC/PKCS7Padding" to "AES128/CBC/PKCS7Padding", - "AES128/ECB/PKCS7Padding" to "AES128/ECB/PKCS7Padding", - "AES192/CBC/PKCS7Padding" to "AES192/CBC/PKCS7Padding", - "AES192/ECB/PKCS7Padding" to "AES192/ECB/PKCS7Padding", - "AES256/CBC/PKCS7Padding" to "AES256/CBC/PKCS7Padding", - "AES256/ECB/PKCS7Padding" to "AES256/ECB/PKCS7Padding", - ) @JvmField @AutoWired(name = KEY_SENDER_ID) diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/CallReceiver.kt b/app/src/main/java/com/idormy/sms/forwarder/receiver/CallReceiver.kt index 39db0f4e..bfabef94 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/receiver/CallReceiver.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/CallReceiver.kt @@ -5,6 +5,7 @@ import androidx.work.OneTimeWorkRequestBuilder import androidx.work.WorkManager import androidx.work.workDataOf import com.google.gson.Gson +import com.idormy.sms.forwarder.App.Companion.CALL_TYPE_MAP import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.entity.CallInfo import com.idormy.sms.forwarder.entity.MsgInfo @@ -22,17 +23,6 @@ open class CallReceiver : PhoneStateReceiver() { companion object { private val TAG = CallReceiver::class.java.simpleName - //通话类型:1.来电挂机 2.去电挂机 3.未接来电 4.来电提醒 5.来电接通 6.去电拨出 - private val CALL_TYPE_MAP = mapOf( - //"0" to getString(R.string.unknown_call), - "1" to getString(R.string.incoming_call_ended), - "2" to getString(R.string.outgoing_call_ended), - "3" to getString(R.string.missed_call), - "4" to getString(R.string.incoming_call_received), - "5" to getString(R.string.incoming_call_answered), - "6" to getString(R.string.outgoing_call_started), - ) - //const val ACTION_IN = "android.intent.action.PHONE_STATE" const val ACTION_OUT = "android.intent.action.NEW_OUTGOING_CALL" const val EXTRA_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER" diff --git a/app/src/main/java/com/idormy/sms/forwarder/workers/ActionWorker.kt b/app/src/main/java/com/idormy/sms/forwarder/workers/ActionWorker.kt index fca3ffd8..0912b4cd 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/workers/ActionWorker.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/workers/ActionWorker.kt @@ -146,7 +146,7 @@ class ActionWorker(context: Context, params: WorkerParameters) : CoroutineWorker SendUtils.sendMsgSender(msgInfo, ruleSetting, 0, -1L, -1L) successNum++ - writeLog(String.format(getString(R.string.successful_execution), ruleSetting.name), "SUCCESS") + writeLog(String.format(getString(R.string.successful_execution), ruleSetting.getName()), "SUCCESS") } TASK_ACTION_CLEANER -> { diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 55b6a650..d851a168 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -640,8 +640,8 @@ SMS CALL APP - ALL - ANY + All + Any Transpond All Phone Num Msg Content @@ -1201,11 +1201,11 @@ Triggered upon receiving SMS broadcast received SMS broadcast from %s Call - Triggered upon receiving call broadcast - received call broadcast from %s + Triggered upon receiving CALL broadcast + received CALL broadcast from %s Notification - Triggered upon receiving app notification - received app notification + Triggered upon receiving APP notification + received APP notification Bluetooth Device Triggered upon changes in Bluetooth status Send Sms