优化:多语言切换时枚举常量自动切换语言

This commit is contained in:
pppscn 2024-03-14 17:49:13 +08:00
parent 22474b2295
commit e4432cb037
14 changed files with 203 additions and 172 deletions

View File

@ -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<String, String> = mutableMapOf()
var FILED_MAP: MutableMap<String, String> = mutableMapOf()
var CHECK_MAP: MutableMap<String, String> = mutableMapOf()
var SIM_SLOT_MAP: MutableMap<String, String> = mutableMapOf()
var FORWARD_STATUS_MAP: MutableMap<Int, String> = mutableMapOf()
var BARK_LEVEL_MAP: MutableMap<String, String> = mutableMapOf()
var BARK_ENCRYPTION_ALGORITHM_MAP: MutableMap<String, String> = mutableMapOf()
//已插入SIM卡信息
var SimInfoList: MutableMap<Int, SimInfo> = 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",
)
)
}
}

View File

@ -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) {

View File

@ -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?) {

View File

@ -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,113 +59,77 @@ 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<String, String>() {
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<String, String>() {
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<String, String>() {
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<Sender>? = 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)
}
}

View File

@ -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)

View File

@ -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<FragmentLogsBinding?>(), MsgPagingAdapter.OnIt
private var adapter = MsgPagingAdapter(this)
private val viewModel by viewModels<MsgViewModel> { BaseViewModelFactory(context) }
private var currentType: String = "sms"
private val FORWARD_STATUS_MAP = object : HashMap<Int, String>() {
init {
put(0, getString(R.string.failed))
put(1, getString(R.string.processing))
put(2, getString(R.string.success))
}
}
override fun viewBindingInflate(
inflater: LayoutInflater,

View File

@ -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<FragmentRulesEditBinding?>(), View.OnClic
private var titleBar: TitleBar? = null
private val viewModel by viewModels<RuleViewModel> { 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

View File

@ -1065,7 +1065,7 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding?>(), 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)

View File

@ -256,7 +256,8 @@ class RuleFragment : BaseFragment<FragmentTasksActionRuleBinding?>(), View.OnCli
ruleSpinnerList.clear()
ruleListAll = ruleList as MutableList<Rule>
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

View File

@ -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<FragmentTasksConditionMsgBinding?>(), 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

View File

@ -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<FragmentSendersBarkBinding?>(), 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)

View File

@ -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"

View File

@ -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 -> {

View File

@ -640,8 +640,8 @@
<string name="rule_sms">SMS</string>
<string name="rule_call">CALL</string>
<string name="rule_app">APP</string>
<string name="rule_all">ALL</string>
<string name="rule_any">ANY</string>
<string name="rule_all">All</string>
<string name="rule_any">Any</string>
<string name="rule_transpond_all">Transpond All</string>
<string name="rule_phone_num">Phone Num</string>
<string name="rule_msg_content">Msg Content</string>
@ -1201,11 +1201,11 @@
<string name="task_sms_tips">Triggered upon receiving SMS broadcast</string>
<string name="task_sms_when">received SMS broadcast from %s</string>
<string name="task_call">Call</string>
<string name="task_call_tips">Triggered upon receiving call broadcast</string>
<string name="task_call_when">received call broadcast from %s</string>
<string name="task_call_tips">Triggered upon receiving CALL broadcast</string>
<string name="task_call_when">received CALL broadcast from %s</string>
<string name="task_app">Notification</string>
<string name="task_app_tips">Triggered upon receiving app notification</string>
<string name="task_app_when">received app notification</string>
<string name="task_app_tips">Triggered upon receiving APP notification</string>
<string name="task_app_when">received APP notification</string>
<string name="task_bluetooth">Bluetooth Device</string>
<string name="task_bluetooth_tips">Triggered upon changes in Bluetooth status</string>
<string name="task_sendsms">Send Sms</string>