| | |
| | | |
| | | |
| | | class SmsReceiver : BroadcastReceiver() { |
| | | |
| | | // 添加一个静态同步锁对象 |
| | | companion object { |
| | | private val syncLock = Any() |
| | | } |
| | | // 安全防护关键词数组 |
| | | private var securityKeywordsList = emptyList<String>() |
| | | |
| | |
| | | val messages = arrayOfNulls<SmsMessage>(pdus.size) |
| | | val messageBody = StringBuilder() |
| | | |
| | | // 获取短信时间戳(使用第一条短信的时间戳) |
| | | var timestamp: Long = 0 |
| | | |
| | | for (i in pdus.indices) { |
| | | messages[i] = SmsMessage.createFromPdu(pdus[i] as ByteArray) |
| | | messageBody.append(messages[i]?.messageBody) |
| | | if (i == 0) { |
| | | timestamp = messages[i]?.timestampMillis ?: System.currentTimeMillis() |
| | | } |
| | | } |
| | | |
| | | // 保存原始短信 |
| | |
| | | val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()) |
| | | val createtime = sdf.format(date) |
| | | |
| | | // 使用同步块处理保存操作 |
| | | synchronized(syncLock) { |
| | | // 根据不同类型处理数据 |
| | | when (response.data.category) { |
| | | "快递" -> { |
| | |
| | | company = response.data.details.company, |
| | | pickupCode = response.data.details.pickupCode, |
| | | address = response.data.details.address, |
| | | time = response.data.details.time, |
| | | smsTimestamp = timestamp // 添加短信时间戳 |
| | | time = response.data.details.time |
| | | ) |
| | | CodeUtils.saveCode(code) |
| | | } |
| | |
| | | date = response.data.details.date, |
| | | address = response.data.details.address, |
| | | minAmount = response.data.details.min_amount, |
| | | number = response.data.details.number, |
| | | smsTimestamp = timestamp // 添加短信时间戳 |
| | | number = response.data.details.number |
| | | ) |
| | | CodeUtils.saveCode(code) |
| | | } |
| | |
| | | amount = response.data.details.amount, |
| | | datetime = response.data.details.datetime, |
| | | address = response.data.details.address, |
| | | balance = response.data.details.balance, |
| | | smsTimestamp = timestamp // 添加短信时间戳 |
| | | balance = response.data.details.balance |
| | | ) |
| | | CodeUtils.saveCode(code) |
| | | } |
| | |
| | | end = response.data.details.end, |
| | | seat = response.data.details.seat, |
| | | time = response.data.details.time, |
| | | address = response.data.details.address, |
| | | smsTimestamp = timestamp // 添加短信时间戳 |
| | | address = response.data.details.address |
| | | ) |
| | | CodeUtils.saveCode(code) |
| | | } |
| | |
| | | seat = response.data.details.seat, |
| | | time = response.data.details.time, |
| | | address = response.data.details.address, |
| | | trips = response.data.details.trips, |
| | | smsTimestamp = timestamp // 添加短信时间戳 |
| | | trips = response.data.details.trips |
| | | ) |
| | | CodeUtils.saveCode(code) |
| | | } |
| | | } |
| | | |
| | | else -> {} |
| | | } |
| | | } |
| | | // 发送广播通知数据已更新 |
| | | val updateIntent = Intent("com.example.firstapp.DATA_UPDATED") |
| | | context.sendBroadcast(updateIntent) |