优化:多语言切换时枚举常量自动切换语言
This commit is contained in:
parent
22474b2295
commit
e4432cb037
|
@ -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",
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
}
|
|
@ -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) {
|
||||
|
|
|
@ -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?) {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 -> {
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue