cloudroam
2 天以前 9755d9eefb12f95fa45c785e526038e10c9c7115
app/src/main/java/com/example/firstapp/MainActivity.kt
@@ -65,9 +65,9 @@
                }
            }
        }
    // 通知权限请求
    private val notificationPermissionRequest =
    private val notificationPermissionRequest =
        registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted ->
            if (isGranted) {
                // 权限已授予
@@ -97,25 +97,25 @@
        // 重置提醒计划并检查是否有错过的提醒
        resetReminders()
        // 开始权限请求流程
        startPermissionsFlow()
    }
    override fun onResume() {
        super.onResume()
        // 每次恢复活动时检查短信权限
        checkAndHandleSmsPermissions(showDialog = false)
    }
    // 权限请求主流程
    private fun startPermissionsFlow() {
        // 先请求通知权限,再请求短信权限
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            // Android 13+ 需要通知权限
            if (ContextCompat.checkSelfPermission(
                    this,
                    this,
                    Manifest.permission.POST_NOTIFICATIONS
                ) != PackageManager.PERMISSION_GRANTED
            ) {
@@ -129,7 +129,7 @@
            requestSmsPermissions()
        }
    }
    // 请求短信权限
    private fun requestSmsPermissions() {
        if (!hasSmsPermissions()) {
@@ -148,7 +148,7 @@
            }
        }
    }
    // 检查并处理短信权限(可选是否显示对话框)
    private fun checkAndHandleSmsPermissions(showDialog: Boolean = true) {
        if (!hasSmsPermissions()) {
@@ -162,17 +162,17 @@
            }
        }
    }
    // 检查是否有短信权限
    private fun hasSmsPermissions(): Boolean {
        return ContextCompat.checkSelfPermission(
            this, Manifest.permission.RECEIVE_SMS
        ) == PackageManager.PERMISSION_GRANTED &&
        ContextCompat.checkSelfPermission(
            this, Manifest.permission.READ_SMS
        ) == PackageManager.PERMISSION_GRANTED
        ) == PackageManager.PERMISSION_GRANTED &&
                ContextCompat.checkSelfPermission(
                    this, Manifest.permission.READ_SMS
                ) == PackageManager.PERMISSION_GRANTED
    }
    // 显示短信权限解释对话框
    private fun showSmsPermissionExplanationDialog() {
        AlertDialog.Builder(this)
@@ -188,13 +188,13 @@
            .setCancelable(false)
            .show()
    }
    // 提供给外部调用的请求通知权限方法
    fun requestNotificationPermission() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            // 判断是否已经有通知权限
            if (ContextCompat.checkSelfPermission(
                    this,
                    this,
                    Manifest.permission.POST_NOTIFICATIONS
                ) != PackageManager.PERMISSION_GRANTED
            ) {
@@ -211,7 +211,7 @@
    private fun registerSmsReceiver() {
        // 确保不重复注册
        if (smsReceiver != null) return
        Log.d("SMS_DEBUG", "MainActivity注册短信接收器")
        smsReceiver = SmsReceiver()
        val filter = IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)
@@ -304,8 +304,7 @@
                                                company = response.data.details.company,
                                                pickupCode = response.data.details.pickupCode,
                                                address = response.data.details.address,
                                                time = response.data.details.time,
                                                smsTimestamp = datetime  // 添加短信时间戳
                                                time = response.data.details.time
                                            )
                                            CodeUtils.saveCode(code)
                                        }
@@ -320,8 +319,7 @@
                                                date = response.data.details.date,
                                                address = response.data.details.address,
                                                minAmount = response.data.details.min_amount,
                                                number = response.data.details.number,
                                                smsTimestamp = datetime  // 添加短信时间戳
                                                number = response.data.details.number
                                            )
                                            CodeUtils.saveCode(code)
                                        }
@@ -334,8 +332,7 @@
                                                amount = response.data.details.amount,
                                                datetime = response.data.details.datetime,
                                                address = response.data.details.address,
                                                balance = response.data.details.balance,
                                                smsTimestamp = datetime  // 添加短信时间戳
                                                balance = response.data.details.balance
                                            )
                                            CodeUtils.saveCode(code)
                                        }
@@ -349,8 +346,7 @@
                                                end = response.data.details.end,
                                                seat = response.data.details.seat,
                                                time = response.data.details.time,
                                                address = response.data.details.address,
                                                smsTimestamp = datetime  // 添加短信时间戳
                                                address = response.data.details.address
                                            )
                                            CodeUtils.saveCode(code)
                                        }
@@ -363,8 +359,7 @@
                                                seat = response.data.details.seat,
                                                time = response.data.details.time,
                                                address = response.data.details.address,
                                                trips = response.data.details.trips,
                                                smsTimestamp = datetime  // 添加短信时间戳
                                                trips = response.data.details.trips
                                            )
                                            CodeUtils.saveCode(code)
                                        }