整理:code review

This commit is contained in:
pppscn 2023-12-20 20:35:31 +08:00
parent 1da0257c8c
commit 06ce0112a9
44 changed files with 77 additions and 171 deletions

View File

@ -29,7 +29,6 @@
<uses-permission <uses-permission
android:name="android.permission.MANAGE_EXTERNAL_STORAGE" android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" /> tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_MMS" /> <uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" /> <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />

View File

@ -15,7 +15,7 @@ import com.idormy.sms.forwarder.databinding.AdapterFrpcsCardViewListItemBinding
import com.xuexiang.xutil.resource.ResUtils.getColors import com.xuexiang.xutil.resource.ResUtils.getColors
import frpclib.Frpclib import frpclib.Frpclib
@Suppress("EmptyMethod", "unused") @Suppress("EmptyMethod")
class FrpcPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter<Frpc, MyViewHolder>(diffCallback) { class FrpcPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter<Frpc, MyViewHolder>(diffCallback) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {

View File

@ -1,56 +0,0 @@
package com.idormy.sms.forwarder.adapter
import android.annotation.SuppressLint
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.paging.PagingDataAdapter
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import com.idormy.sms.forwarder.adapter.LogsPagingAdapter.MyViewHolder
import com.idormy.sms.forwarder.database.entity.LogsAndRuleAndSender
import com.idormy.sms.forwarder.databinding.AdapterLogsCardViewListItemBinding
import com.xuexiang.xutil.data.DateUtils
class LogsPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter<LogsAndRuleAndSender, MyViewHolder>(diffCallback) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val binding = AdapterLogsCardViewListItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return MyViewHolder(binding)
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val item = getItem(position)
if (item != null) {
holder.binding.tvFrom.text = item.msg.from
holder.binding.tvTime.text = DateUtils.getFriendlyTimeSpanByNow(item.logs.time)
holder.binding.tvContent.text = item.msg.content
//holder.binding.ivSenderImage.setImageResource(Sender.getImageId(item.sender.type))
//holder.binding.ivStatusImage.setImageResource(item.logs.statusImageId)
holder.binding.ivSimImage.setImageResource(item.msg.simImageId)
holder.binding.cardView.setOnClickListener { view: View? ->
itemClickListener.onItemClicked(view, item)
}
}
}
class MyViewHolder(val binding: AdapterLogsCardViewListItemBinding) : RecyclerView.ViewHolder(binding.root)
interface OnItemClickListener {
fun onItemClicked(view: View?, item: LogsAndRuleAndSender)
fun onItemRemove(view: View?, id: Int)
}
companion object {
var diffCallback: DiffUtil.ItemCallback<LogsAndRuleAndSender> = object : DiffUtil.ItemCallback<LogsAndRuleAndSender>() {
override fun areItemsTheSame(oldItem: LogsAndRuleAndSender, newItem: LogsAndRuleAndSender): Boolean {
return oldItem.logs.id == newItem.logs.id
}
@SuppressLint("DiffUtilEquals")
override fun areContentsTheSame(oldItem: LogsAndRuleAndSender, newItem: LogsAndRuleAndSender): Boolean {
return oldItem.logs === newItem.logs
}
}
}
}

View File

@ -18,7 +18,7 @@ import com.idormy.sms.forwarder.database.entity.MsgAndLogs
import com.idormy.sms.forwarder.databinding.AdapterLogsCardViewListItemBinding import com.idormy.sms.forwarder.databinding.AdapterLogsCardViewListItemBinding
import com.xuexiang.xutil.data.DateUtils import com.xuexiang.xutil.data.DateUtils
@Suppress("EmptyMethod", "unused") @Suppress("EmptyMethod")
class MsgPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter<MsgAndLogs, MyViewHolder>(diffCallback) { class MsgPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter<MsgAndLogs, MyViewHolder>(diffCallback) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {

View File

@ -16,7 +16,7 @@ import com.idormy.sms.forwarder.adapter.RulePagingAdapter.MyViewHolder
import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.database.entity.Rule
import com.idormy.sms.forwarder.databinding.AdapterRulesCardViewListItemBinding import com.idormy.sms.forwarder.databinding.AdapterRulesCardViewListItemBinding
@Suppress("EmptyMethod", "unused") @Suppress("EmptyMethod")
class RulePagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter<Rule, MyViewHolder>(diffCallback) { class RulePagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter<Rule, MyViewHolder>(diffCallback) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {

View File

@ -11,7 +11,7 @@ import com.idormy.sms.forwarder.adapter.SenderPagingAdapter.MyViewHolder
import com.idormy.sms.forwarder.database.entity.Sender import com.idormy.sms.forwarder.database.entity.Sender
import com.idormy.sms.forwarder.databinding.AdapterSendersCardViewListItemBinding import com.idormy.sms.forwarder.databinding.AdapterSendersCardViewListItemBinding
@Suppress("EmptyMethod", "unused") @Suppress("EmptyMethod")
class SenderPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter<Sender, MyViewHolder>(diffCallback) { class SenderPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter<Sender, MyViewHolder>(diffCallback) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {

View File

@ -18,7 +18,7 @@ import com.idormy.sms.forwarder.databinding.AdapterTasksCardViewListItemBinding
import com.idormy.sms.forwarder.entity.TaskSetting import com.idormy.sms.forwarder.entity.TaskSetting
import com.xuexiang.xutil.data.DateUtils import com.xuexiang.xutil.data.DateUtils
@Suppress("EmptyMethod", "unused") @Suppress("EmptyMethod")
class TaskPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter<Task, MyViewHolder>(diffCallback) { class TaskPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter<Task, MyViewHolder>(diffCallback) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {

View File

@ -12,7 +12,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.R
import com.idormy.sms.forwarder.entity.TaskSetting import com.idormy.sms.forwarder.entity.TaskSetting
@Suppress("DEPRECATION", "unused") @Suppress("DEPRECATION")
class TaskSettingAdapter( class TaskSettingAdapter(
val itemList: MutableList<TaskSetting>, val itemList: MutableList<TaskSetting>,
private val editClickListener: (Int) -> Unit, private val editClickListener: (Int) -> Unit,

View File

@ -12,7 +12,6 @@ import me.samlss.broccoli.Broccoli
* @author XUE * @author XUE
* @since 2019/4/8 16:33 * @since 2019/4/8 16:33
*/ */
@Suppress("unused")
abstract class BroccoliRecyclerAdapter<T>(collection: Collection<T>?) : abstract class BroccoliRecyclerAdapter<T>(collection: Collection<T>?) :
BaseRecyclerAdapter<T>(collection) { BaseRecyclerAdapter<T>(collection) {
/** /**

View File

@ -9,7 +9,6 @@ import com.xuexiang.xui.adapter.recyclerview.RecyclerViewHolder
* @author xuexiang * @author xuexiang
* @since 2020/3/20 12:44 AM * @since 2020/3/20 12:44 AM
*/ */
@Suppress("unused")
abstract class BaseDelegateAdapter<T> : XDelegateAdapter<T, RecyclerViewHolder> { abstract class BaseDelegateAdapter<T> : XDelegateAdapter<T, RecyclerViewHolder> {
constructor() : super() constructor() : super()
constructor(list: Collection<T>?) : super(list) constructor(list: Collection<T>?) : super(list)

View File

@ -16,7 +16,7 @@ import com.xuexiang.xui.widget.actionbar.TitleUtils
* @author xuexiang * @author xuexiang
* @since 2018/11/22 上午11:26 * @since 2018/11/22 上午11:26
*/ */
@Suppress("UNUSED_PARAMETER", "unused") @Suppress("UNUSED_PARAMETER")
abstract class BaseContainerFragment : XPageContainerListFragment() { abstract class BaseContainerFragment : XPageContainerListFragment() {
override fun initPage() { override fun initPage() {
initTitle() initTitle()

View File

@ -13,7 +13,6 @@ import com.xuexiang.xutil.common.StringUtils
* @author xuexiang * @author xuexiang
* @since 2018/12/19 上午12:19 * @since 2018/12/19 上午12:19
*/ */
@Suppress("unused")
class SimpleListAdapter(context: Context?, data: List<Map<String?, String?>?>?) : class SimpleListAdapter(context: Context?, data: List<Map<String?, String?>?>?) :
BaseListAdapter<Map<String?, String?>, SimpleListAdapter.ViewHolder>(context, data) { BaseListAdapter<Map<String?, String?>, SimpleListAdapter.ViewHolder>(context, data) {
override fun newViewHolder(convertView: View): ViewHolder { override fun newViewHolder(convertView: View): ViewHolder {

View File

@ -11,8 +11,18 @@ import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils import android.text.TextUtils
import android.util.Log import android.util.Log
import android.view.* import android.view.Gravity
import android.webkit.* import android.view.KeyEvent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.DownloadListener
import android.webkit.WebChromeClient
import android.webkit.WebResourceError
import android.webkit.WebResourceRequest
import android.webkit.WebResourceResponse
import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.FrameLayout import android.widget.FrameLayout
import android.widget.ImageView import android.widget.ImageView
import android.widget.LinearLayout import android.widget.LinearLayout
@ -46,7 +56,6 @@ import com.xuexiang.xutil.net.JsonUtil
*/ */
@Suppress( @Suppress(
"unused", "unused",
"MemberVisibilityCanBePrivate",
"ProtectedInFinal", "ProtectedInFinal",
"NAME_SHADOWING", "NAME_SHADOWING",
"UNUSED_PARAMETER", "UNUSED_PARAMETER",
@ -147,6 +156,7 @@ class AgentWebFragment : Fragment(), FragmentKeyDown {
if (!mAgentWeb!!.back()) { if (!mAgentWeb!!.back()) {
this.requireActivity().finish() this.requireActivity().finish()
} }
R.id.iv_finish -> this.requireActivity().finish() R.id.iv_finish -> this.requireActivity().finish()
R.id.iv_more -> showPoPup(v) R.id.iv_more -> showPoPup(v)
else -> {} else -> {}
@ -459,24 +469,28 @@ class AgentWebFragment : Fragment(), FragmentKeyDown {
} }
true true
} }
R.id.copy -> { R.id.copy -> {
if (mAgentWeb != null) { if (mAgentWeb != null) {
mAgentWeb!!.webCreator.webView.url?.let { toCopy(context, it) } mAgentWeb!!.webCreator.webView.url?.let { toCopy(context, it) }
} }
true true
} }
R.id.default_browser -> { R.id.default_browser -> {
if (mAgentWeb != null) { if (mAgentWeb != null) {
mAgentWeb!!.webCreator.webView.url?.let { openBrowser(it) } mAgentWeb!!.webCreator.webView.url?.let { openBrowser(it) }
} }
true true
} }
R.id.share -> { R.id.share -> {
if (mAgentWeb != null) { if (mAgentWeb != null) {
mAgentWeb!!.webCreator.webView.url?.let { shareWebUrl(it) } mAgentWeb!!.webCreator.webView.url?.let { shareWebUrl(it) }
} }
true true
} }
else -> false else -> false
} }
} }

View File

@ -47,7 +47,7 @@ import java.util.Locale
* *
* 这里主要是做去广告的工作 * 这里主要是做去广告的工作
*/ */
@Suppress("UNUSED_PARAMETER", "DEPRECATION", "OVERRIDE_DEPRECATION", "unused") @Suppress("UNUSED_PARAMETER", "DEPRECATION", "OVERRIDE_DEPRECATION")
open class MiddlewareWebViewClient : MiddlewareWebClientBase() { open class MiddlewareWebViewClient : MiddlewareWebClientBase() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean { override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean {

View File

@ -19,7 +19,6 @@ import java.net.URISyntaxException
* @author xuexiang * @author xuexiang
* @since 2019-10-21 9:51 * @since 2019-10-21 9:51
*/ */
@Suppress("DEPRECATION")
class WebViewInterceptDialog : AppCompatActivity(), DialogInterface.OnDismissListener { class WebViewInterceptDialog : AppCompatActivity(), DialogInterface.OnDismissListener {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)

View File

@ -1,7 +1,13 @@
package com.idormy.sms.forwarder.database.dao package com.idormy.sms.forwarder.database.dao
import androidx.paging.PagingSource import androidx.paging.PagingSource
import androidx.room.* import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import androidx.room.Transaction
import androidx.room.Update
import com.idormy.sms.forwarder.database.entity.Logs import com.idormy.sms.forwarder.database.entity.Logs
import com.idormy.sms.forwarder.database.entity.LogsAndRuleAndSender import com.idormy.sms.forwarder.database.entity.LogsAndRuleAndSender
import io.reactivex.Completable import io.reactivex.Completable
@ -25,9 +31,6 @@ interface LogsDao {
@Query("DELETE FROM Logs") @Query("DELETE FROM Logs")
fun deleteAll() fun deleteAll()
@Query("DELETE FROM Logs where time<:time")
fun deleteTimeAgo(time: Long)
@Update @Update
fun update(logs: Logs): Completable fun update(logs: Logs): Completable

View File

@ -21,12 +21,6 @@ interface TaskDao {
@Query("SELECT * FROM Task where id=:id") @Query("SELECT * FROM Task where id=:id")
fun getOne(id: Long): Task fun getOne(id: Long): Task
@Query("SELECT * FROM Task ORDER BY id DESC")
fun getAll(): List<Task>
@Query("SELECT * FROM Task where type = 1000 ORDER BY id DESC")
fun getAllCron(): List<Task>
@Query("SELECT * FROM Task where type < 1000 ORDER BY id DESC") @Query("SELECT * FROM Task where type < 1000 ORDER BY id DESC")
fun pagingSourceFixed(): PagingSource<Int, Task> fun pagingSourceFixed(): PagingSource<Int, Task>
@ -40,10 +34,6 @@ interface TaskDao {
@Query("SELECT * FROM Task WHERE status = 1 AND type = :taskType") @Query("SELECT * FROM Task WHERE status = 1 AND type = :taskType")
fun getByType(taskType: Int): List<Task> fun getByType(taskType: Int): List<Task>
//TODO:根据条件查询,不推荐使用
@Query("SELECT * FROM Task WHERE type = :taskType AND conditions LIKE '%' || :conditionKey || '%' AND conditions LIKE '%' || :conditionValue || '%'")
fun getByCondition(taskType: String, conditionKey: String, conditionValue: String): List<Task>
@Insert @Insert
fun insert(task: Task) fun insert(task: Task)

View File

@ -5,6 +5,7 @@ import android.text.TextUtils
import android.util.Log import android.util.Log
import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.App
import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.R
import com.idormy.sms.forwarder.utils.AppUtils
import com.idormy.sms.forwarder.utils.BatteryUtils import com.idormy.sms.forwarder.utils.BatteryUtils
import com.idormy.sms.forwarder.utils.HttpServerUtils import com.idormy.sms.forwarder.utils.HttpServerUtils
import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.SettingUtils
@ -12,7 +13,6 @@ import com.idormy.sms.forwarder.utils.SettingUtils.Companion.enableSmsTemplate
import com.idormy.sms.forwarder.utils.SettingUtils.Companion.extraDeviceMark import com.idormy.sms.forwarder.utils.SettingUtils.Companion.extraDeviceMark
import com.idormy.sms.forwarder.utils.SettingUtils.Companion.smsTemplate import com.idormy.sms.forwarder.utils.SettingUtils.Companion.smsTemplate
import com.idormy.sms.forwarder.utils.task.TaskUtils import com.idormy.sms.forwarder.utils.task.TaskUtils
import com.xuexiang.xutil.app.AppUtils
import com.xuexiang.xutil.resource.ResUtils.getString import com.xuexiang.xutil.resource.ResUtils.getString
import java.io.Serializable import java.io.Serializable
import java.text.SimpleDateFormat import java.text.SimpleDateFormat

View File

@ -10,6 +10,7 @@ import com.idormy.sms.forwarder.activity.MainActivity
import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.core.BaseFragment
import com.idormy.sms.forwarder.core.webview.AgentWebActivity import com.idormy.sms.forwarder.core.webview.AgentWebActivity
import com.idormy.sms.forwarder.databinding.FragmentAboutBinding import com.idormy.sms.forwarder.databinding.FragmentAboutBinding
import com.idormy.sms.forwarder.utils.AppUtils
import com.idormy.sms.forwarder.utils.CacheUtils import com.idormy.sms.forwarder.utils.CacheUtils
import com.idormy.sms.forwarder.utils.CommonUtils.Companion.gotoProtocol import com.idormy.sms.forwarder.utils.CommonUtils.Companion.gotoProtocol
import com.idormy.sms.forwarder.utils.CommonUtils.Companion.previewMarkdown import com.idormy.sms.forwarder.utils.CommonUtils.Companion.previewMarkdown
@ -25,7 +26,6 @@ import com.xuexiang.xui.widget.actionbar.TitleBar
import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction
import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog
import com.xuexiang.xui.widget.textview.supertextview.SuperTextView import com.xuexiang.xui.widget.textview.supertextview.SuperTextView
import com.xuexiang.xutil.app.AppUtils
import com.xuexiang.xutil.file.FileUtils import com.xuexiang.xutil.file.FileUtils
import frpclib.Frpclib import frpclib.Frpclib
import java.io.File import java.io.File

View File

@ -40,6 +40,7 @@ import com.idormy.sms.forwarder.receiver.BootCompletedReceiver
import com.idormy.sms.forwarder.service.ForegroundService import com.idormy.sms.forwarder.service.ForegroundService
import com.idormy.sms.forwarder.service.LocationService import com.idormy.sms.forwarder.service.LocationService
import com.idormy.sms.forwarder.utils.* import com.idormy.sms.forwarder.utils.*
import com.idormy.sms.forwarder.utils.AppUtils.getAppPackageName
import com.idormy.sms.forwarder.widget.GuideTipsDialog import com.idormy.sms.forwarder.widget.GuideTipsDialog
import com.idormy.sms.forwarder.workers.LoadAppListWorker import com.idormy.sms.forwarder.workers.LoadAppListWorker
import com.jeremyliao.liveeventbus.LiveEventBus import com.jeremyliao.liveeventbus.LiveEventBus
@ -55,7 +56,6 @@ import com.xuexiang.xui.widget.picker.widget.builder.OptionsPickerBuilder
import com.xuexiang.xui.widget.picker.widget.listener.OnOptionsSelectListener import com.xuexiang.xui.widget.picker.widget.listener.OnOptionsSelectListener
import com.xuexiang.xutil.XUtil import com.xuexiang.xutil.XUtil
import com.xuexiang.xutil.XUtil.getPackageManager import com.xuexiang.xutil.XUtil.getPackageManager
import com.xuexiang.xutil.app.AppUtils.getAppPackageName
import kotlinx.coroutines.* import kotlinx.coroutines.*
import java.util.* import java.util.*

View File

@ -54,7 +54,7 @@ import java.util.*
@Page(name = "自动任务·编辑器") @Page(name = "自动任务·编辑器")
@Suppress("PrivatePropertyName", "DEPRECATION", "UNUSED_PARAMETER", "EmptyMethod", "unused") @Suppress("PrivatePropertyName", "DEPRECATION", "UNUSED_PARAMETER", "EmptyMethod")
class TasksEditFragment : BaseFragment<FragmentTasksEditBinding?>(), View.OnClickListener, RecyclerViewHolder.OnItemClickListener<PageInfo> { class TasksEditFragment : BaseFragment<FragmentTasksEditBinding?>(), View.OnClickListener, RecyclerViewHolder.OnItemClickListener<PageInfo> {
private val TAG: String = TasksEditFragment::class.java.simpleName private val TAG: String = TasksEditFragment::class.java.simpleName

View File

@ -41,7 +41,7 @@ import com.xuexiang.xui.widget.actionbar.TitleBar
import com.xuexiang.xutil.XUtil import com.xuexiang.xutil.XUtil
@Page(name = "SendSms") @Page(name = "SendSms")
@Suppress("PrivatePropertyName", "DEPRECATION") @Suppress("PrivatePropertyName")
class SendSmsFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.OnClickListener { class SendSmsFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.OnClickListener {
private val TAG: String = SendSmsFragment::class.java.simpleName private val TAG: String = SendSmsFragment::class.java.simpleName

View File

@ -34,7 +34,6 @@ import com.xuexiang.xui.utils.CountDownButtonHelper
import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xui.widget.actionbar.TitleBar
import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction
import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog
import com.xuexiang.xutil.app.AppUtils
import com.xuexiang.xutil.data.ConvertTools import com.xuexiang.xutil.data.ConvertTools
import com.xuexiang.xutil.file.FileIOUtils import com.xuexiang.xutil.file.FileIOUtils
import com.xuexiang.xutil.file.FileUtils import com.xuexiang.xutil.file.FileUtils

View File

@ -24,7 +24,7 @@ import com.xuexiang.xui.utils.CountDownButtonHelper
import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xui.widget.actionbar.TitleBar
import com.xuexiang.xutil.data.ConvertTools import com.xuexiang.xutil.data.ConvertTools
@Suppress("PrivatePropertyName", "DEPRECATION") @Suppress("PrivatePropertyName")
@Page(name = "远程加话簿") @Page(name = "远程加话簿")
class ContactAddFragment : BaseFragment<FragmentClientContactAddBinding?>(), View.OnClickListener { class ContactAddFragment : BaseFragment<FragmentClientContactAddBinding?>(), View.OnClickListener {

View File

@ -29,7 +29,7 @@ import com.xuexiang.xui.widget.actionbar.TitleBar
import com.xuexiang.xui.widget.grouplist.XUIGroupListView import com.xuexiang.xui.widget.grouplist.XUIGroupListView
import com.xuexiang.xutil.data.ConvertTools import com.xuexiang.xutil.data.ConvertTools
@Suppress("PrivatePropertyName", "DEPRECATION") @Suppress("PrivatePropertyName")
@Page(name = "远程找手机") @Page(name = "远程找手机")
class LocationFragment : BaseFragment<FragmentClientLocationBinding?>(), View.OnClickListener { class LocationFragment : BaseFragment<FragmentClientLocationBinding?>(), View.OnClickListener {

View File

@ -25,7 +25,7 @@ import com.xuexiang.xui.utils.CountDownButtonHelper
import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xui.widget.actionbar.TitleBar
import com.xuexiang.xutil.data.ConvertTools import com.xuexiang.xutil.data.ConvertTools
@Suppress("PrivatePropertyName", "DEPRECATION") @Suppress("PrivatePropertyName")
@Page(name = "远程发短信") @Page(name = "远程发短信")
class SmsSendFragment : BaseFragment<FragmentClientSmsSendBinding?>(), View.OnClickListener { class SmsSendFragment : BaseFragment<FragmentClientSmsSendBinding?>(), View.OnClickListener {

View File

@ -22,7 +22,7 @@ import com.idormy.sms.forwarder.utils.TaskWorker
import com.idormy.sms.forwarder.utils.task.TaskUtils import com.idormy.sms.forwarder.utils.task.TaskUtils
import com.idormy.sms.forwarder.workers.NetworkWorker import com.idormy.sms.forwarder.workers.NetworkWorker
@Suppress("PrivatePropertyName", "DEPRECATION", "UNUSED_PARAMETER", "unused") @Suppress("PrivatePropertyName", "DEPRECATION", "UNUSED_PARAMETER")
class NetworkChangeReceiver : BroadcastReceiver() { class NetworkChangeReceiver : BroadcastReceiver() {
private val TAG: String = NetworkChangeReceiver::class.java.simpleName private val TAG: String = NetworkChangeReceiver::class.java.simpleName

View File

@ -8,7 +8,7 @@ import android.util.Log
import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.SettingUtils
import java.util.Date import java.util.Date
@Suppress("DEPRECATION", "unused") @Suppress("DEPRECATION")
abstract class PhoneStateReceiver : BroadcastReceiver() { abstract class PhoneStateReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) { override fun onReceive(context: Context, intent: Intent) {

View File

@ -20,7 +20,7 @@ import com.xuexiang.xrouter.utils.TextUtils
import java.util.Date import java.util.Date
//短信广播 //短信广播
@Suppress("PrivatePropertyName", "unused", "UNUSED_PARAMETER") @Suppress("PrivatePropertyName", "UNUSED_PARAMETER")
class SmsReceiver : BroadcastReceiver() { class SmsReceiver : BroadcastReceiver() {
private var TAG = SmsReceiver::class.java.simpleName private var TAG = SmsReceiver::class.java.simpleName

View File

@ -1,57 +0,0 @@
package com.idormy.sms.forwarder.server.component
import com.yanzhenjie.andserver.error.HttpException
import com.yanzhenjie.andserver.framework.HandlerInterceptor
import com.yanzhenjie.andserver.framework.handler.MethodHandler
import com.yanzhenjie.andserver.framework.handler.RequestHandler
import com.yanzhenjie.andserver.framework.mapping.Addition
import com.yanzhenjie.andserver.http.HttpRequest
import com.yanzhenjie.andserver.http.HttpResponse
//@Interceptor
class LoginInterceptor : HandlerInterceptor {
override fun onIntercept(
request: HttpRequest,
response: HttpResponse,
handler: RequestHandler,
): Boolean {
if (handler is MethodHandler) {
val methodHandler: MethodHandler = handler
val addition: Addition = methodHandler.addition
if (!isLogin(request, addition)) {
throw HttpException(401, "You are not logged in yet.")
}
}
return false
}
private fun isNeedLogin(addition: Addition?): Boolean {
if (addition == null) {
return false
}
val stringType = addition.stringType
if (stringType.isEmpty()) {
return false
}
val booleanType = addition.booleanType
return if (booleanType.isEmpty()) {
false
} else stringType[0].equals("login", ignoreCase = true) && booleanType[0]
}
private fun isLogin(request: HttpRequest, addition: Addition): Boolean {
if (isNeedLogin(addition)) {
val session = request.session
if (session != null) {
val o = session.getAttribute(LOGIN_ATTRIBUTE)
return o is Boolean && o
}
return false
}
return true
}
companion object {
const val LOGIN_ATTRIBUTE = "USER.LOGIN.SIGN"
}
}

View File

@ -4,10 +4,10 @@ import android.util.Log
import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.App
import com.idormy.sms.forwarder.server.model.BaseRequest import com.idormy.sms.forwarder.server.model.BaseRequest
import com.idormy.sms.forwarder.server.model.ConfigData import com.idormy.sms.forwarder.server.model.ConfigData
import com.idormy.sms.forwarder.utils.AppUtils
import com.idormy.sms.forwarder.utils.HttpServerUtils import com.idormy.sms.forwarder.utils.HttpServerUtils
import com.idormy.sms.forwarder.utils.PhoneUtils import com.idormy.sms.forwarder.utils.PhoneUtils
import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.SettingUtils
import com.xuexiang.xutil.app.AppUtils
import com.yanzhenjie.andserver.annotation.* import com.yanzhenjie.andserver.annotation.*
@Suppress("PrivatePropertyName") @Suppress("PrivatePropertyName")

View File

@ -49,13 +49,35 @@ object AppUtils {
return appsInfo return appsInfo
} }
fun getAppVersionName(): String? { fun getAppVersionCode(): Int {
return getAppVersionCode(App.context.packageName)
}
private fun getAppVersionCode(packageName: String?): Int {
if (packageName.isNullOrBlank()) {
return -1
}
return try {
val pm: PackageManager = App.context.packageManager
val pi: PackageInfo = pm.getPackageInfo(packageName, 0)
pi.versionCode
} catch (e: PackageManager.NameNotFoundException) {
e.printStackTrace()
-1
}
}
fun getAppPackageName(): String {
return App.context.packageName
}
fun getAppVersionName(): String {
return getAppVersionName(App.context.packageName) return getAppVersionName(App.context.packageName)
} }
fun getAppVersionName(packageName: String): String? { private fun getAppVersionName(packageName: String): String {
if (packageName.isBlank()) { if (packageName.isBlank()) {
return null return ""
} }
return try { return try {
val pm: PackageManager = App.context.packageManager val pm: PackageManager = App.context.packageManager
@ -63,7 +85,7 @@ object AppUtils {
pi.versionName pi.versionName
} catch (e: PackageManager.NameNotFoundException) { } catch (e: PackageManager.NameNotFoundException) {
e.printStackTrace() e.printStackTrace()
null ""
} }
} }

View File

@ -43,7 +43,7 @@ import java.util.regex.Pattern
/** /**
* 常用工具类 * 常用工具类
*/ */
@Suppress("RegExpRedundantEscape", "unused", "RegExpUnnecessaryNonCapturingGroup", "DEPRECATION") @Suppress("RegExpRedundantEscape", "unused", "RegExpUnnecessaryNonCapturingGroup")
class CommonUtils private constructor() { class CommonUtils private constructor() {
companion object { companion object {
/** /**

View File

@ -238,6 +238,7 @@ const val TASK_ACTION_SENDSMS = 2000
const val TASK_ACTION_NOTIFICATION = 2001 const val TASK_ACTION_NOTIFICATION = 2001
const val TASK_ACTION_FRPC = 2002 const val TASK_ACTION_FRPC = 2002
const val TASK_ACTION_HTTPSERVER = 2003 const val TASK_ACTION_HTTPSERVER = 2003
const val TASK_ACTION_CLEANER = 2004
const val SP_BATTERY_INFO = "battery_info" const val SP_BATTERY_INFO = "battery_info"
const val SP_BATTERY_STATUS = "battery_status" const val SP_BATTERY_STATUS = "battery_status"

View File

@ -10,7 +10,6 @@ import com.idormy.sms.forwarder.core.Core
import com.idormy.sms.forwarder.entity.CloneInfo import com.idormy.sms.forwarder.entity.CloneInfo
import com.idormy.sms.forwarder.entity.LocationInfo import com.idormy.sms.forwarder.entity.LocationInfo
import com.idormy.sms.forwarder.server.model.BaseRequest import com.idormy.sms.forwarder.server.model.BaseRequest
import com.xuexiang.xutil.app.AppUtils
import com.xuexiang.xutil.resource.ResUtils.getString import com.xuexiang.xutil.resource.ResUtils.getString
import com.yanzhenjie.andserver.error.HttpException import com.yanzhenjie.andserver.error.HttpException
import java.net.URLEncoder import java.net.URLEncoder

View File

@ -25,7 +25,6 @@ import java.text.SimpleDateFormat
import java.util.Calendar import java.util.Calendar
import java.util.Date import java.util.Date
@Suppress("DEPRECATION")
object SendUtils { object SendUtils {
private const val TAG = "SendUtils" private const val TAG = "SendUtils"

View File

@ -16,7 +16,6 @@ import com.xuexiang.xhttp2.callback.SimpleCallBack
import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xhttp2.exception.ApiException
import com.xuexiang.xutil.resource.ResUtils.getString import com.xuexiang.xutil.resource.ResUtils.getString
@Suppress("DEPRECATION")
class PushplusUtils private constructor() { class PushplusUtils private constructor() {
companion object { companion object {

View File

@ -16,7 +16,6 @@ import com.xuexiang.xutil.XUtil
import com.xuexiang.xutil.net.NetworkUtils import com.xuexiang.xutil.net.NetworkUtils
import com.xuexiang.xutil.resource.ResUtils.getString import com.xuexiang.xutil.resource.ResUtils.getString
@Suppress("DEPRECATION")
class SmsUtils { class SmsUtils {
companion object { companion object {

View File

@ -8,9 +8,9 @@ import com.google.gson.Gson
import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.database.entity.Rule
import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.MsgInfo
import com.idormy.sms.forwarder.entity.setting.SocketSetting import com.idormy.sms.forwarder.entity.setting.SocketSetting
import com.idormy.sms.forwarder.utils.AppUtils
import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SendUtils
import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.SettingUtils
import com.xuexiang.xutil.app.AppUtils
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken
import org.eclipse.paho.client.mqttv3.MqttCallbackExtended import org.eclipse.paho.client.mqttv3.MqttCallbackExtended
import org.eclipse.paho.client.mqttv3.MqttClient import org.eclipse.paho.client.mqttv3.MqttClient

View File

@ -7,10 +7,10 @@ import android.util.Log
import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.database.entity.Rule
import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.MsgInfo
import com.idormy.sms.forwarder.entity.setting.UrlSchemeSetting import com.idormy.sms.forwarder.entity.setting.UrlSchemeSetting
import com.idormy.sms.forwarder.utils.AppUtils
import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SendUtils
import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.SettingUtils
import com.xuexiang.xutil.XUtil import com.xuexiang.xutil.XUtil
import com.xuexiang.xutil.app.AppUtils
import java.net.URLEncoder import java.net.URLEncoder
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*

View File

@ -8,13 +8,13 @@ import com.google.gson.Gson
import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.database.entity.Rule
import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.MsgInfo
import com.idormy.sms.forwarder.entity.setting.WebhookSetting import com.idormy.sms.forwarder.entity.setting.WebhookSetting
import com.idormy.sms.forwarder.utils.AppUtils
import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SendUtils
import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.SettingUtils
import com.xuexiang.xhttp2.XHttp import com.xuexiang.xhttp2.XHttp
import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.cache.model.CacheMode
import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.callback.SimpleCallBack
import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xhttp2.exception.ApiException
import com.xuexiang.xutil.app.AppUtils
import java.net.URLEncoder import java.net.URLEncoder
import java.nio.charset.StandardCharsets import java.nio.charset.StandardCharsets
import java.text.SimpleDateFormat import java.text.SimpleDateFormat

View File

@ -13,7 +13,6 @@ import com.xuexiang.xutil.resource.ResUtils.getString
* @author xuexiang * @author xuexiang
* @since 2019/4/15 上午12:01 * @since 2019/4/15 上午12:01
*/ */
@Suppress("DEPRECATION")
class CustomUpdateFailureListener @JvmOverloads constructor( class CustomUpdateFailureListener @JvmOverloads constructor(
/** /**
* 是否需要错误提示 * 是否需要错误提示

View File

@ -10,13 +10,13 @@ import com.idormy.sms.forwarder.R
import com.idormy.sms.forwarder.core.http.api.ApiService.IGetService import com.idormy.sms.forwarder.core.http.api.ApiService.IGetService
import com.idormy.sms.forwarder.core.http.callback.NoTipCallBack import com.idormy.sms.forwarder.core.http.callback.NoTipCallBack
import com.idormy.sms.forwarder.core.http.entity.TipInfo import com.idormy.sms.forwarder.core.http.entity.TipInfo
import com.idormy.sms.forwarder.utils.AppUtils
import com.idormy.sms.forwarder.utils.SharedPreference import com.idormy.sms.forwarder.utils.SharedPreference
import com.xuexiang.constant.TimeConstants import com.xuexiang.constant.TimeConstants
import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xaop.annotation.SingleClick
import com.xuexiang.xhttp2.XHttp import com.xuexiang.xhttp2.XHttp
import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.cache.model.CacheMode
import com.xuexiang.xui.widget.dialog.BaseDialog import com.xuexiang.xui.widget.dialog.BaseDialog
import com.xuexiang.xutil.app.AppUtils
import com.zzhoujay.richtext.RichText import com.zzhoujay.richtext.RichText
/** /**

View File

@ -1139,7 +1139,7 @@
<string name="delete_task_tips">Are you sure to delete this task?</string> <string name="delete_task_tips">Are you sure to delete this task?</string>
<string name="delete_task_toast">The task has deleted.</string> <string name="delete_task_toast">The task has deleted.</string>
<string name="add_condition">Add Condition</string> <string name="add_condition">Add Condition</string>
<string name="add_condition_tips" tools:ignore="StringFormatCount">Example: Below 20% battery</string> <string name="add_condition_tips" tools:ignore="StringFormatCount">Example: battery level below 20%</string>
<string name="add_condition_continue">Continue to add condition</string> <string name="add_condition_continue">Continue to add condition</string>
<string name="add_action">Add Action</string> <string name="add_action">Add Action</string>
<string name="add_action_tips">Example: Disable all forwarding</string> <string name="add_action_tips">Example: Disable all forwarding</string>