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