| | |
| | | import android.annotation.SuppressLint |
| | | import android.app.AlertDialog |
| | | import android.content.Intent |
| | | import android.os.Build |
| | | import android.os.Bundle |
| | | import android.os.Handler |
| | | import android.os.Looper |
| | | import android.view.Gravity |
| | | import android.view.LayoutInflater |
| | | import android.view.MenuItem |
| | | import android.view.MotionEvent |
| | | import android.view.View |
| | | import android.view.WindowInsets |
| | | import android.widget.LinearLayout |
| | | import android.widget.TextView |
| | | import androidx.appcompat.widget.Toolbar |
| | | import android.widget.Button |
| | | import androidx.lifecycle.ViewModelProvider |
| | | import androidx.lifecycle.lifecycleScope |
| | | import android.os.Build |
| | | import android.Manifest |
| | | import android.content.Context |
| | | import android.content.pm.PackageManager |
| | | import androidx.activity.result.contract.ActivityResultContracts |
| | | import androidx.core.content.ContextCompat |
| | | |
| | | import com.example.firstapp.databinding.ActivitySettingBinding |
| | | import com.example.firstapp.R |
| | | import com.example.firstapp.core.Core |
| | | import com.example.firstapp.database.service.RetrofitClient |
| | | import com.example.firstapp.ui.home.HomeViewModel |
| | | import com.example.firstapp.utils.Log |
| | | import kotlinx.coroutines.launch |
| | | |
| | | /** |
| | | * An example full-screen activity that shows and hides the system UI (i.e. |
| | |
| | | ViewModelProvider(this).get(HomeViewModel::class.java) |
| | | } |
| | | private var isFullscreen: Boolean = false |
| | | |
| | | // 添加通知权限请求 |
| | | private val notificationPermissionRequest = |
| | | registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted -> |
| | | if (isGranted) { |
| | | // 权限已授予,可以发送通知 |
| | | AlertDialog.Builder(this) |
| | | .setTitle("通知权限") |
| | | .setMessage("通知权限已开启,您将能收到重要提醒") |
| | | .setPositiveButton("确定", null) |
| | | .show() |
| | | } else { |
| | | // 权限被拒绝 |
| | | AlertDialog.Builder(this) |
| | | .setTitle("通知权限") |
| | | .setMessage("通知权限被拒绝,应用将无法发送提醒通知。您可以在系统设置中手动开启权限。") |
| | | .setPositiveButton("确定", null) |
| | | .show() |
| | | } |
| | | } |
| | | |
| | | @SuppressLint("ClickableViewAccessibility") |
| | | override fun onCreate(savedInstanceState: Bundle?) { |
| | |
| | | // |
| | | // }) |
| | | |
| | | |
| | | // 通知权限 |
| | | setupNotificationPermission() |
| | | // 退出登录 |
| | | logout() |
| | | // 账号注销 |
| | | accountClose() |
| | | // 关于我们 |
| | | aboutCompany() |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | private fun setupNotificationPermission() { |
| | | binding.notificationPermission.setOnClickListener { |
| | | // 请求通知权限(在Android 13及以上需要) |
| | | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { |
| | | if (ContextCompat.checkSelfPermission( |
| | | this, |
| | | Manifest.permission.POST_NOTIFICATIONS |
| | | ) != PackageManager.PERMISSION_GRANTED |
| | | ) { |
| | | notificationPermissionRequest.launch(Manifest.permission.POST_NOTIFICATIONS) |
| | | } else { |
| | | // 已经有权限 |
| | | AlertDialog.Builder(this) |
| | | .setTitle("通知权限") |
| | | .setMessage("您已经开启了通知权限") |
| | | .setPositiveButton("确定", null) |
| | | .show() |
| | | } |
| | | } else { |
| | | // Android 13以下版本不需要请求权限 |
| | | AlertDialog.Builder(this) |
| | | .setTitle("通知权限") |
| | | .setMessage("当前系统版本无需单独请求通知权限") |
| | | .setPositiveButton("确定", null) |
| | | .show() |
| | | } |
| | | } |
| | | } |
| | | |
| | | private fun aboutCompany(){ |
| | | |
| | | binding.aboutCompany.setOnClickListener { |
| | | |
| | | // 跳转到关于我们的 |
| | | val intent = Intent(this, AboutCompanyActivity::class.java) |
| | | startActivity(intent) |
| | | |
| | | } |
| | | } |
| | | |
| | | private fun accountClose(){ |
| | | |
| | | |
| | | binding.accountClose.setOnClickListener { |
| | | |
| | | val dialogView = LayoutInflater.from(this).inflate(R.layout.account_close_dialog_custom, null) |
| | | |
| | | val dialog = AlertDialog.Builder(this) |
| | | .setView(dialogView) |
| | | .create() |
| | | |
| | | dialog.window?.setBackgroundDrawableResource(R.drawable.dialog_background) |
| | | |
| | | val btnConfirm = dialogView.findViewById<Button>(R.id.btnConfirm) |
| | | btnConfirm.setOnClickListener { |
| | | dialog.dismiss() |
| | | } |
| | | |
| | | val btnCancel = dialogView.findViewById<Button>(R.id.btnCancel) |
| | | btnCancel.setOnClickListener { |
| | | // 关闭账户 |
| | | lifecycleScope.launch { |
| | | try { |
| | | // 清除本地的数据库 |
| | | |
| | | RetrofitClient.apiService.closeAccount() |
| | | |
| | | Core.code.deleteAll() |
| | | Core.msg.deleteAll() |
| | | Core.keyword.deleteAll() |
| | | // Core.reminder.deleteAll() |
| | | |
| | | // 清楚登录相关信息 |
| | | homeViewModel.logout() |
| | | |
| | | dialog.dismiss() |
| | | // 跳转到 LoginActivity 并清除之前的任务栈 |
| | | var intent = Intent(this@SettingActivity, LoginActivity::class.java) |
| | | intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK |
| | | startActivity(intent) |
| | | // 关闭当前页面 |
| | | finish() |
| | | |
| | | } catch (ex: Exception) { |
| | | Log.e("关闭账户", ex.message ?: "关闭账户报错") |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | dialog.show() |
| | | |
| | | } |
| | | } |
| | | |
| | | private fun logout(){ |
| | | |
| | | binding.settingExit.setOnClickListener { |
| | | // 弹出确认退出的对话框 |
| | | val alertDialog = AlertDialog.Builder(this) |
| | |
| | | val intent = Intent(this, LoginActivity::class.java) |
| | | intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK |
| | | startActivity(intent) |
| | | |
| | | // 关闭当前页面 |
| | | finish() |
| | | } |
| | |
| | | // 显示对话框 |
| | | alertDialog.show() |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | // 点击返回按钮时调用 |