From 668847c91f99c4c227e6643e9876095ac953e86d Mon Sep 17 00:00:00 2001
From: pppscn <35696959@qq.com>
Date: Fri, 23 Sep 2022 00:37:07 +0800
Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86=EF=BC=9Acode=20review?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 1 +
app/build.gradle | 4 +-
app/proguard-rules.pro | 4 --
app/src/main/AndroidManifest.xml | 4 +-
.../core/webview/AgentWebFragment.kt | 22 ++++---
.../core/webview/XPageWebViewFragment.kt | 13 +++--
.../sms/forwarder/database/AppDatabase.kt | 4 +-
.../forwarder/fragment/SettingsFragment.kt | 2 +-
.../fragment/client/CloneFragment.kt | 57 ++++++++++++++-----
.../fragment/client/WolSendFragment.kt | 16 ++++--
.../forwarder/receiver/PhoneStateReceiver.kt | 42 +++++++++++---
.../idormy/sms/forwarder/utils/PhoneUtils.kt | 22 +++++--
.../sms/forwarder/utils/mail/MailUtil.kt | 7 ++-
.../sms/forwarder/utils/sdkinit/UMengInit.kt | 2 +-
.../sms/forwarder/widget/GuideTipsDialog.kt | 2 +-
.../sms/forwarder/workers/SendWorker.kt | 20 +++++--
.../res/drawable-v17/xui_config_bg_splash.xml | 17 ------
.../bg_bottom_sheet.xml | 0
.../adapter_sms_card_view_list_item.xml | 3 +-
app/src/main/res/layout/dialog_guide_tips.xml | 3 +-
app/src/main/res/layout/fragment_about.xml | 4 +-
app/src/main/res/layout/fragment_client.xml | 3 +-
.../layout/fragment_client_battery_query.xml | 4 +-
.../res/layout/fragment_senders_gotify.xml | 2 +-
app/src/main/res/layout/fragment_settings.xml | 33 +++++++----
app/src/main/res/values/styles.xml | 10 +++-
26 files changed, 200 insertions(+), 101 deletions(-)
delete mode 100644 app/src/main/res/drawable-v17/xui_config_bg_splash.xml
rename app/src/main/res/{drawable-v17 => drawable}/bg_bottom_sheet.xml (100%)
diff --git a/.gitignore b/.gitignore
index 57c9bd65..ab4d76fd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,3 +35,4 @@
/app/seeds.txt
/app/unused.txt
/pic/*.bkp
+/*.txt
diff --git a/app/build.gradle b/app/build.gradle
index f49e6740..3604beca 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -203,11 +203,11 @@ dependencies {
implementation 'com.github.xuexiangjys.AgentWeb:agentweb-core:1.0.0'
implementation 'com.github.xuexiangjys.AgentWeb:agentweb-download:1.0.0'//选填
//腾讯的键值对存储mmkv:https://github.com/Tencent/MMKV
- implementation 'com.tencent:mmkv:1.2.13'
+ implementation 'com.tencent:mmkv:1.2.14'
//屏幕适配AutoSize:https://github.com/JessYanCoding/AndroidAutoSize
implementation 'me.jessyan:autosize:1.2.1'
//umeng统计
- implementation 'com.umeng.umsdk:common:9.5.0'
+ implementation 'com.umeng.umsdk:common:9.5.2'
implementation 'com.umeng.umsdk:asms:1.6.3'
//预加载占位控件
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index df6e9228..90ee13be 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -166,8 +166,6 @@
-dontwarn com.squareup.okhttp3.**
-keep class com.squareup.okhttp3.** { *;}
-dontwarn okio.**
--dontwarn javax.annotation.Nullable
--dontwarn javax.annotation.ParametersAreNonnullByDefault
-dontwarn javax.annotation.**
#如果用到Gson解析包的,直接添加下面这几行就能成功混淆,不然会报错
@@ -208,8 +206,6 @@
#}
-dontwarn okio.**
--dontwarn javax.annotation.Nullable
--dontwarn javax.annotation.ParametersAreNonnullByDefault
-dontwarn javax.annotation.**
# fastjson
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 28c2814e..52c2ee3f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -19,7 +19,9 @@
-
+
diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/webview/AgentWebFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/core/webview/AgentWebFragment.kt
index 1f7df011..7bc03e70 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/core/webview/AgentWebFragment.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/core/webview/AgentWebFragment.kt
@@ -44,7 +44,14 @@ import com.xuexiang.xutil.net.JsonUtil
* @author xuexiang
* @since 2019/1/4 下午11:13
*/
-@Suppress("unused", "MemberVisibilityCanBePrivate", "ProtectedInFinal", "NAME_SHADOWING", "UNUSED_PARAMETER", "OVERRIDE_DEPRECATION")
+@Suppress(
+ "unused",
+ "MemberVisibilityCanBePrivate",
+ "ProtectedInFinal",
+ "NAME_SHADOWING",
+ "UNUSED_PARAMETER",
+ "OVERRIDE_DEPRECATION"
+)
class AgentWebFragment : Fragment(), FragmentKeyDown {
private var mBackImageView: ImageView? = null
private var mLineView: View? = null
@@ -372,11 +379,11 @@ class AgentWebFragment : Fragment(), FragmentKeyDown {
override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) {
Log.i(TAG, "mUrl:$url onPageStarted target:$url")
timer[url] = System.currentTimeMillis()
- if (url == url) {
- pageNavigator(View.GONE)
- } else {
- pageNavigator(View.VISIBLE)
- }
+ //if (url == url) {
+ // pageNavigator(View.GONE)
+ //} else {
+ pageNavigator(View.VISIBLE)
+ //}
}
override fun onPageFinished(view: WebView, url: String) {
@@ -495,7 +502,8 @@ class AgentWebFragment : Fragment(), FragmentKeyDown {
* @param text
*/
private fun toCopy(context: Context?, text: String) {
- val manager = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
+ val manager =
+ requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
manager.setPrimaryClip(ClipData.newPlainText(null, text))
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/webview/XPageWebViewFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/core/webview/XPageWebViewFragment.kt
index 69de9112..86fd4495 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/core/webview/XPageWebViewFragment.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/core/webview/XPageWebViewFragment.kt
@@ -360,11 +360,11 @@ class XPageWebViewFragment : BaseFragment(), View.OnCl
override fun onPageStarted(view: WebView, url: String, favicon: Bitmap) {
mTimer[url] = System.currentTimeMillis()
- if (url == url) {
- pageNavigator(View.GONE)
- } else {
- pageNavigator(View.VISIBLE)
- }
+ //if (url == url) {
+ // pageNavigator(View.GONE)
+ //} else {
+ pageNavigator(View.VISIBLE)
+ //}
}
override fun onPageFinished(view: WebView, url: String) {
@@ -480,7 +480,8 @@ class XPageWebViewFragment : BaseFragment(), View.OnCl
* @param text
*/
private fun toCopy(context: Context?, text: String) {
- val manager = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
+ val manager =
+ requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
manager.setPrimaryClip(ClipData.newPlainText(null, text))
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/AppDatabase.kt b/app/src/main/java/com/idormy/sms/forwarder/database/AppDatabase.kt
index f658b0d9..80a40204 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/database/AppDatabase.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/database/AppDatabase.kt
@@ -44,13 +44,13 @@ abstract class AppDatabase : RoomDatabase() {
}
private fun buildDatabase(context: Context): AppDatabase {
- var builder = Room.databaseBuilder(
+ val builder = Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java,
DATABASE_NAME
)
.allowMainThreadQueries() //TODO:允许主线程访问,后面再优化
- .addCallback(object : RoomDatabase.Callback() {
+ .addCallback(object : Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
//fillInDb(context.applicationContext)
db.execSQL(
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 5eb7b67a..8dbdb607 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
@@ -635,7 +635,7 @@ class SettingsFragment : BaseFragment(), View.OnClickL
KeepAliveUtils.ignoreBatteryOptimization(requireActivity())
} else if (isChecked) {
XToastUtils.info(R.string.isIgnored)
- sbBatterySetting.isChecked = isIgnoreBatteryOptimization
+ sbBatterySetting.isChecked = true
} else {
XToastUtils.info(R.string.isIgnored2)
sbBatterySetting.isChecked = isIgnoreBatteryOptimization
diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt
index 0358842f..92106958 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt
@@ -75,7 +75,8 @@ class CloneFragment : BaseFragment(), View.OnClickL
.request(object : OnPermissionCallback {
@SuppressLint("SetTextI18n")
override fun onGranted(permissions: List, all: Boolean) {
- backupPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).path
+ backupPath =
+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).path
binding!!.tvBackupPath.text = backupPath + File.separator + backupFile
}
@@ -105,7 +106,8 @@ class CloneFragment : BaseFragment(), View.OnClickL
//按钮增加倒计时,避免重复点击
pushCountDownHelper = CountDownButtonHelper(binding!!.btnPush, SettingUtils.requestTimeout)
- pushCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener {
+ pushCountDownHelper!!.setOnCountDownListener(object :
+ CountDownButtonHelper.OnCountDownListener {
override fun onCountDown(time: Int) {
binding!!.btnPush.text = String.format(getString(R.string.seconds_n), time)
}
@@ -115,7 +117,8 @@ class CloneFragment : BaseFragment(), View.OnClickL
}
})
pullCountDownHelper = CountDownButtonHelper(binding!!.btnPull, SettingUtils.requestTimeout)
- pullCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener {
+ pullCountDownHelper!!.setOnCountDownListener(object :
+ CountDownButtonHelper.OnCountDownListener {
override fun onCountDown(time: Int) {
binding!!.btnPull.text = String.format(getString(R.string.seconds_n), time)
}
@@ -125,7 +128,8 @@ class CloneFragment : BaseFragment(), View.OnClickL
}
})
exportCountDownHelper = CountDownButtonHelper(binding!!.btnExport, 3)
- exportCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener {
+ exportCountDownHelper!!.setOnCountDownListener(object :
+ CountDownButtonHelper.OnCountDownListener {
override fun onCountDown(time: Int) {
binding!!.btnExport.text = String.format(getString(R.string.seconds_n), time)
}
@@ -135,7 +139,8 @@ class CloneFragment : BaseFragment(), View.OnClickL
}
})
importCountDownHelper = CountDownButtonHelper(binding!!.btnImport, 3)
- importCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener {
+ importCountDownHelper!!.setOnCountDownListener(object :
+ CountDownButtonHelper.OnCountDownListener {
override fun onCountDown(time: Int) {
binding!!.btnImport.text = String.format(getString(R.string.seconds_n), time)
}
@@ -176,7 +181,12 @@ class CloneFragment : BaseFragment(), View.OnClickL
XToastUtils.error(getString(R.string.export_failed))
}
} catch (e: Exception) {
- XToastUtils.error(String.format(getString(R.string.export_failed_tips), e.message))
+ XToastUtils.error(
+ String.format(
+ getString(R.string.export_failed_tips),
+ e.message
+ )
+ )
}
}
//导入配置
@@ -199,7 +209,9 @@ class CloneFragment : BaseFragment(), View.OnClickL
//替换Date字段为当前时间
val builder = GsonBuilder()
- builder.registerTypeAdapter(Date::class.java, JsonDeserializer { _, _, _ -> Date() })
+ builder.registerTypeAdapter(
+ Date::class.java,
+ JsonDeserializer { _, _, _ -> Date() })
val gson = builder.create()
val cloneInfo = gson.fromJson(jsonStr, CloneInfo::class.java)
Log.d(TAG, "cloneInfo = $cloneInfo")
@@ -213,7 +225,12 @@ class CloneFragment : BaseFragment(), View.OnClickL
XToastUtils.error(getString(R.string.import_failed))
}
} catch (e: Exception) {
- XToastUtils.error(String.format(getString(R.string.import_failed_tips), e.message))
+ XToastUtils.error(
+ String.format(
+ getString(R.string.import_failed_tips),
+ e.message
+ )
+ )
}
}
}
@@ -236,7 +253,8 @@ class CloneFragment : BaseFragment(), View.OnClickL
msgMap["timestamp"] = timestamp
val clientSignKey = HttpServerUtils.clientSignKey
if (!TextUtils.isEmpty(clientSignKey)) {
- msgMap["sign"] = HttpServerUtils.calcSign(timestamp.toString(), clientSignKey.toString())
+ msgMap["sign"] =
+ HttpServerUtils.calcSign(timestamp.toString(), clientSignKey.toString())
}
msgMap["data"] = HttpServerUtils.exportSettings()
@@ -261,7 +279,10 @@ class CloneFragment : BaseFragment(), View.OnClickL
override fun onSuccess(response: String) {
Log.i(TAG, response)
try {
- val resp: BaseResponse = Gson().fromJson(response, object : TypeToken>() {}.type)
+ val resp: BaseResponse = Gson().fromJson(
+ response,
+ object : TypeToken>() {}.type
+ )
if (resp.code == 200) {
XToastUtils.success(ResUtils.getString(R.string.request_succeeded))
} else {
@@ -283,7 +304,7 @@ class CloneFragment : BaseFragment(), View.OnClickL
XToastUtils.error(getString(R.string.invalid_service_address))
return
}
-
+
exportCountDownHelper?.start()
val requestUrl: String = HttpServerUtils.serverAddress + "/clone/pull"
@@ -294,7 +315,8 @@ class CloneFragment : BaseFragment(), View.OnClickL
msgMap["timestamp"] = timestamp
val clientSignKey = HttpServerUtils.clientSignKey
if (!TextUtils.isEmpty(clientSignKey)) {
- msgMap["sign"] = HttpServerUtils.calcSign(timestamp.toString(), clientSignKey.toString())
+ msgMap["sign"] =
+ HttpServerUtils.calcSign(timestamp.toString(), clientSignKey.toString())
}
val dataMap: MutableMap = mutableMapOf()
@@ -324,15 +346,20 @@ class CloneFragment : BaseFragment(), View.OnClickL
try {
//替换Date字段为当前时间
val builder = GsonBuilder()
- builder.registerTypeAdapter(Date::class.java, JsonDeserializer { _, _, _ -> Date() })
+ builder.registerTypeAdapter(
+ Date::class.java,
+ JsonDeserializer { _, _, _ -> Date() })
val gson = builder.create()
- val resp: BaseResponse = gson.fromJson(response, object : TypeToken>() {}.type)
+ val resp: BaseResponse = gson.fromJson(
+ response,
+ object : TypeToken>() {}.type
+ )
if (resp.code == 200) {
val cloneInfo = resp.data
Log.d(TAG, "cloneInfo = $cloneInfo")
if (cloneInfo == null) {
- XToastUtils.error(ResUtils.getString(R.string.request_failed) + cloneInfo)
+ XToastUtils.error(ResUtils.getString(R.string.request_failed))
return
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/WolSendFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/WolSendFragment.kt
index cbcf4c71..3955dd03 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/WolSendFragment.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/WolSendFragment.kt
@@ -51,7 +51,8 @@ class WolSendFragment : BaseFragment(), View.OnCl
override fun initViews() {
//发送按钮增加倒计时,避免重复点击
mCountDownHelper = CountDownButtonHelper(binding!!.btnSubmit, SettingUtils.requestTimeout)
- mCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener {
+ mCountDownHelper!!.setOnCountDownListener(object :
+ CountDownButtonHelper.OnCountDownListener {
override fun onCountDown(time: Int) {
binding!!.btnSubmit.text = String.format(getString(R.string.seconds_n), time)
}
@@ -64,7 +65,8 @@ class WolSendFragment : BaseFragment(), View.OnCl
//取出历史记录
val history = HttpServerUtils.wolHistory
if (!TextUtils.isEmpty(history)) {
- wolHistory = Gson().fromJson(history, object : TypeToken>() {}.type)
+ wolHistory =
+ Gson().fromJson(history, object : TypeToken>() {}.type)
}
}
@@ -83,7 +85,7 @@ class WolSendFragment : BaseFragment(), View.OnCl
}
Log.d(TAG, "wolHistory = $wolHistory")
- MaterialDialog.Builder(context!!)
+ MaterialDialog.Builder(requireContext())
.title(R.string.server_history)
.items(wolHistory.keys)
.itemsCallbackSingleChoice(0) { _: MaterialDialog?, _: View?, _: Int, text: CharSequence ->
@@ -111,7 +113,8 @@ class WolSendFragment : BaseFragment(), View.OnCl
msgMap["timestamp"] = timestamp
val clientSignKey = HttpServerUtils.clientSignKey
if (!TextUtils.isEmpty(clientSignKey)) {
- msgMap["sign"] = HttpServerUtils.calcSign(timestamp.toString(), clientSignKey.toString())
+ msgMap["sign"] =
+ HttpServerUtils.calcSign(timestamp.toString(), clientSignKey.toString())
}
val mac = binding!!.etMac.text.toString()
@@ -161,7 +164,10 @@ class WolSendFragment : BaseFragment(), View.OnCl
override fun onSuccess(response: String) {
Log.i(TAG, response)
try {
- val resp: BaseResponse = Gson().fromJson(response, object : TypeToken>() {}.type)
+ val resp: BaseResponse = Gson().fromJson(
+ response,
+ object : TypeToken>() {}.type
+ )
if (resp.code == 200) {
XToastUtils.success(ResUtils.getString(R.string.request_succeeded))
//添加到历史记录
diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.kt b/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.kt
index 8d0a61b1..bd61a890 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.kt
@@ -21,7 +21,6 @@ import com.idormy.sms.forwarder.utils.PhoneUtils
import com.idormy.sms.forwarder.utils.SettingUtils
import com.idormy.sms.forwarder.utils.Worker
import com.idormy.sms.forwarder.workers.SendWorker
-import com.xuexiang.xutil.resource.ResUtils
import com.xuexiang.xutil.resource.ResUtils.getString
import java.util.*
@@ -40,7 +39,11 @@ class PhoneStateReceiver : BroadcastReceiver() {
if (TelephonyManager.ACTION_PHONE_STATE_CHANGED != intent.action) return
//权限判断
- if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) return
+ if (ActivityCompat.checkSelfPermission(
+ context,
+ Manifest.permission.READ_PHONE_STATE
+ ) != PackageManager.PERMISSION_GRANTED
+ ) return
//获取来电号码
val number = intent.extras!!.getString(TelephonyManager.EXTRA_INCOMING_NUMBER)
@@ -80,11 +83,12 @@ class PhoneStateReceiver : BroadcastReceiver() {
//来电提醒
if (!TextUtils.isEmpty(number) && SettingUtils.enableCallType4) {
val contacts = PhoneUtils.getContactByNumber(number)
- val contactName = if (contacts.isNotEmpty()) contacts[0].name else getString(R.string.unknown_number)
+ val contactName =
+ if (contacts.isNotEmpty()) contacts[0].name else getString(R.string.unknown_number)
val sb = StringBuilder()
sb.append(getString(R.string.linkman)).append(contactName).append("\n")
- sb.append(ResUtils.getString(R.string.mandatory_type))
+ sb.append(getString(R.string.mandatory_type))
sb.append(getString(R.string.incoming_call))
val msgInfo = MsgInfo("call", number.toString(), sb.toString(), Date(), "", -1)
@@ -117,15 +121,27 @@ class PhoneStateReceiver : BroadcastReceiver() {
when {
lastState == TelephonyManager.CALL_STATE_RINGING -> {
Log.d(TAG, "来电未接")
- sendReceiveCallMsg(context, 3, MMKVUtils.getString("CALL_SAVED_NUMBER", null))
+ sendReceiveCallMsg(
+ context,
+ 3,
+ MMKVUtils.getString("CALL_SAVED_NUMBER", null)
+ )
}
MMKVUtils.getBoolean("CALL_IS_INCOMING", false) -> {
Log.d(TAG, "来电挂机")
- sendReceiveCallMsg(context, 1, MMKVUtils.getString("CALL_SAVED_NUMBER", null))
+ sendReceiveCallMsg(
+ context,
+ 1,
+ MMKVUtils.getString("CALL_SAVED_NUMBER", null)
+ )
}
else -> {
Log.d(TAG, "去电挂机")
- sendReceiveCallMsg(context, 2, MMKVUtils.getString("CALL_SAVED_NUMBER", null))
+ sendReceiveCallMsg(
+ context,
+ 2,
+ MMKVUtils.getString("CALL_SAVED_NUMBER", null)
+ )
}
}
}
@@ -161,10 +177,18 @@ class PhoneStateReceiver : BroadcastReceiver() {
//获取联系人姓名
if (TextUtils.isEmpty(callInfo.name)) {
val contacts = PhoneUtils.getContactByNumber(phoneNumber)
- callInfo.name = if (contacts.isNotEmpty()) contacts[0].name else getString(R.string.unknown_number)
+ callInfo.name =
+ if (contacts.isNotEmpty()) contacts[0].name else getString(R.string.unknown_number)
}
- val msgInfo = MsgInfo("call", callInfo.number, PhoneUtils.getCallMsg(callInfo), Date(), simInfo, simSlot)
+ val msgInfo = MsgInfo(
+ "call",
+ callInfo.number,
+ PhoneUtils.getCallMsg(callInfo),
+ Date(),
+ simInfo,
+ simSlot
+ )
val request = OneTimeWorkRequestBuilder()
.setInputData(
workDataOf(
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/PhoneUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/PhoneUtils.kt
index 378bbdcf..46937f42 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/PhoneUtils.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/PhoneUtils.kt
@@ -230,7 +230,10 @@ class PhoneUtils private constructor() {
Log.i(TAG, "cursor count:" + cursor.count)
// 避免超过总数后循环取出
- if (cursor.count == 0 || offset >= cursor.count) return callInfoList
+ if (cursor.count == 0 || offset >= cursor.count) {
+ cursor.close()
+ return callInfoList
+ }
if (cursor.moveToFirst()) {
Log.d(TAG, "Call ColumnNames=${cursor.columnNames.contentToString()}")
@@ -328,7 +331,10 @@ class PhoneUtils private constructor() {
Log.i(TAG, "cursor count:" + cursor.count)
// 避免超过总数后循环取出
- if (cursor.count == 0 || offset >= cursor.count) return contactInfoList
+ if (cursor.count == 0 || offset >= cursor.count) {
+ cursor.close()
+ return contactInfoList
+ }
if (cursor.moveToFirst()) {
val displayNameIndex =
@@ -424,7 +430,10 @@ class PhoneUtils private constructor() {
selectionArgs.toTypedArray(),
"date desc"
) ?: return smsInfoList
- if (offset >= cursorTotal.count) return smsInfoList
+ if (offset >= cursorTotal.count) {
+ cursorTotal.close()
+ return smsInfoList
+ }
val cursor = Core.app.contentResolver.query(
Uri.parse("content://sms/"),
@@ -435,7 +444,10 @@ class PhoneUtils private constructor() {
) ?: return smsInfoList
Log.i(TAG, "cursor count:" + cursor.count)
- if (cursor.count == 0) return smsInfoList
+ if (cursor.count == 0) {
+ cursor.close()
+ return smsInfoList
+ }
if (cursor.moveToFirst()) {
Log.d(TAG, "SMS ColumnNames=${cursor.columnNames.contentToString()}")
@@ -474,6 +486,8 @@ class PhoneUtils private constructor() {
) else -1
smsInfoList.add(smsInfo)
} while (cursor.moveToNext())
+
+ if (!cursorTotal.isClosed) cursorTotal.close()
if (!cursor.isClosed) cursor.close()
}
} catch (e: java.lang.Exception) {
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/mail/MailUtil.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/mail/MailUtil.kt
index b966ecc3..36503ffc 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/mail/MailUtil.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/mail/MailUtil.kt
@@ -34,7 +34,7 @@ object MailUtil {
properties["mail.smtp.auth"] = "true"
properties["mail.smtp.ssl.enable"] = mail.openSSL
if (mail.startTls) {
- properties["mail.smtp.starttls.enable"] = mail.startTls
+ properties["mail.smtp.starttls.enable"] = true
}
if (mail.openSSL) {
properties["mail.smtp.socketFactory.class"] = mail.sslFactory
@@ -94,7 +94,10 @@ object MailUtil {
// 邮件正文
val textBodyPart = MimeBodyPart()
if (mail.content is Spanned) {
- textBodyPart.setContent(Html.toHtml(mail.content as Spanned), "text/html;charset=UTF-8")
+ textBodyPart.setContent(
+ Html.toHtml(mail.content as Spanned),
+ "text/html;charset=UTF-8"
+ )
} else {
textBodyPart.setContent(mail.content, "text/html;charset=UTF-8")
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sdkinit/UMengInit.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sdkinit/UMengInit.kt
index ee5898c9..c15da807 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/sdkinit/UMengInit.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sdkinit/UMengInit.kt
@@ -78,7 +78,7 @@ class UMengInit private constructor() {
* @param context
* @return
*/
- private fun getChannel(context: Context?): String? {
+ private fun getChannel(context: Context?): String {
//return WalleChannelReader.getChannel(context!!, DEFAULT_CHANNEL_ID)
return DEFAULT_CHANNEL_ID
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/widget/GuideTipsDialog.kt b/app/src/main/java/com/idormy/sms/forwarder/widget/GuideTipsDialog.kt
index fd672083..670d645b 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/widget/GuideTipsDialog.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/widget/GuideTipsDialog.kt
@@ -65,7 +65,7 @@ class GuideTipsDialog(context: Context?, tips: List) :
*/
private fun updateTips(tips: List) {
mTips = tips
- if (mTips != null && mTips!!.isNotEmpty() && mTvContent != null) {
+ if (mTips!!.isNotEmpty() && mTvContent != null) {
mIndex = 0
showRichText(mTips!![mIndex])
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/workers/SendWorker.kt b/app/src/main/java/com/idormy/sms/forwarder/workers/SendWorker.kt
index a2012fe4..3f8c1f4b 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/workers/SendWorker.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/workers/SendWorker.kt
@@ -1,5 +1,6 @@
package com.idormy.sms.forwarder.workers
+import android.annotation.SuppressLint
import android.content.Context
import android.util.Log
import androidx.work.CoroutineWorker
@@ -23,6 +24,7 @@ class SendWorker(
workerParams: WorkerParameters,
) : CoroutineWorker(context, workerParams) {
+ @SuppressLint("SimpleDateFormat")
override suspend fun doWork(): Result {
return withContext(Dispatchers.IO) {
@@ -41,8 +43,10 @@ class SendWorker(
val dateFmt = SimpleDateFormat("yyyy-MM-dd")
val mTimeOption = DataProvider.timePeriodOption
- val periodStartStr = dateFmt.format(periodStartDay) + " " + mTimeOption[SettingUtils.silentPeriodStart] + ":00"
- val periodEndStr = dateFmt.format(periodStartEnd) + " " + mTimeOption[SettingUtils.silentPeriodEnd] + ":00"
+ val periodStartStr =
+ dateFmt.format(periodStartDay) + " " + mTimeOption[SettingUtils.silentPeriodStart] + ":00"
+ val periodEndStr =
+ dateFmt.format(periodStartEnd) + " " + mTimeOption[SettingUtils.silentPeriodEnd] + ":00"
val timeFmt = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val periodStart = timeFmt.parse(periodStartStr, ParsePosition(0)).time
@@ -75,14 +79,22 @@ class SendWorker(
//【注意】卡槽id:-1=获取失败、0=卡槽1、1=卡槽2,但是 Rule 表里存的是 SIM1/SIM2
val simSlot = "SIM" + (msgInfo.simSlot + 1)
- val ruleList: List = Core.rule.getRuleAndSender(msgInfo.type, 1, simSlot)
+ val ruleList: List =
+ Core.rule.getRuleAndSender(msgInfo.type, 1, simSlot)
if (ruleList.isEmpty()) {
return@withContext Result.failure(workDataOf("send" to "failed"))
}
for (rule in ruleList) {
if (!rule.rule.checkMsg(msgInfo)) continue
- val log = Logs(0, msgInfo.type, msgInfo.from, msgInfo.content, rule.rule.id, msgInfo.simInfo)
+ val log = Logs(
+ 0,
+ msgInfo.type,
+ msgInfo.from,
+ msgInfo.content,
+ rule.rule.id,
+ msgInfo.simInfo
+ )
val logId = Core.logs.insert(log)
SendUtils.sendMsgSender(msgInfo, rule.rule, rule.sender, logId)
}
diff --git a/app/src/main/res/drawable-v17/xui_config_bg_splash.xml b/app/src/main/res/drawable-v17/xui_config_bg_splash.xml
deleted file mode 100644
index d29139b7..00000000
--- a/app/src/main/res/drawable-v17/xui_config_bg_splash.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- -
-
-
-
- -
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v17/bg_bottom_sheet.xml b/app/src/main/res/drawable/bg_bottom_sheet.xml
similarity index 100%
rename from app/src/main/res/drawable-v17/bg_bottom_sheet.xml
rename to app/src/main/res/drawable/bg_bottom_sheet.xml
diff --git a/app/src/main/res/layout/adapter_sms_card_view_list_item.xml b/app/src/main/res/layout/adapter_sms_card_view_list_item.xml
index 4a1274e4..cb296c5b 100644
--- a/app/src/main/res/layout/adapter_sms_card_view_list_item.xml
+++ b/app/src/main/res/layout/adapter_sms_card_view_list_item.xml
@@ -65,7 +65,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="bottom"
- android:orientation="horizontal">
+ android:orientation="horizontal"
+ tools:ignore="UseCompoundDrawables">
+ android:orientation="vertical"
+ tools:ignore="UselessParent">
+ android:orientation="vertical"
+ tools:ignore="Overdraw">
diff --git a/app/src/main/res/layout/fragment_client.xml b/app/src/main/res/layout/fragment_client.xml
index 35be8eea..64eff136 100644
--- a/app/src/main/res/layout/fragment_client.xml
+++ b/app/src/main/res/layout/fragment_client.xml
@@ -4,7 +4,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/xui_config_color_background"
- android:orientation="vertical">
+ android:orientation="vertical"
+ tools:ignore="Overdraw">
diff --git a/app/src/main/res/layout/fragment_client_battery_query.xml b/app/src/main/res/layout/fragment_client_battery_query.xml
index 331f1c74..609dad7e 100644
--- a/app/src/main/res/layout/fragment_client_battery_query.xml
+++ b/app/src/main/res/layout/fragment_client_battery_query.xml
@@ -1,10 +1,12 @@
+ android:orientation="vertical"
+ tools:ignore="Overdraw">
diff --git a/app/src/main/res/layout/fragment_senders_gotify.xml b/app/src/main/res/layout/fragment_senders_gotify.xml
index 6ae09551..94ae1769 100644
--- a/app/src/main/res/layout/fragment_senders_gotify.xml
+++ b/app/src/main/res/layout/fragment_senders_gotify.xml
@@ -166,7 +166,7 @@
android:inputType="number"
android:maxLength="1"
android:singleLine="true"
- android:text="1"
+ android:text="@string/_1"
app:met_clearButton="true" />
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index 1ca1075f..5fc1aef2 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -123,7 +123,8 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:text="@string/missed_call"
- android:textSize="10sp" />
+ android:textSize="10sp"
+ tools:ignore="SmallSp" />
+ android:textSize="10sp"
+ tools:ignore="SmallSp" />
+ android:textSize="10sp"
+ tools:ignore="SmallSp" />
+ android:textSize="10sp"
+ tools:ignore="SmallSp" />
@@ -230,7 +234,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cancel_app_notify"
- android:textSize="10sp" />
+ android:textSize="10sp"
+ tools:ignore="SmallSp" />
+ android:textSize="10sp"
+ tools:ignore="SmallSp" />
@@ -307,7 +313,8 @@
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/user_app"
- android:textSize="10sp" />
+ android:textSize="10sp"
+ tools:ignore="SmallSp" />
+ android:textSize="10sp"
+ tools:ignore="SmallSp" />
@@ -589,7 +597,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/keep_reminding"
- android:textSize="10sp" />
+ android:textSize="10sp"
+ tools:ignore="SmallSp" />
@@ -861,7 +870,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/play_silence_music"
- android:textSize="10sp" />
+ android:textSize="10sp"
+ tools:ignore="SmallSp" />
+ android:textSize="10sp"
+ tools:ignore="SmallSp" />
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 8a5f5c02..f82cdcd0 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -17,8 +17,12 @@
@@ -43,7 +47,7 @@
- true
- - true
+ - true
- true