18034727885
2026-04-14 370014cbb9ec1ef64e7e42bb4f9a12671461d8e4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package com.xw.yunwei.ui.user.mine.set
 
import android.annotation.SuppressLint
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat
import androidx.lifecycle.lifecycleScope
import com.blankj.utilcode.util.AppUtils
import com.hjq.permissions.OnPermissionCallback
import com.hjq.permissions.Permission
import com.hjq.permissions.XXPermissions
import com.xw.common.CommonDialog
import com.xw.common.base.BaseActivity
import com.xw.common.net.UpdateManager
import com.xw.common.utils.MMKVManager
import com.xw.common.utils.ToastUtilCommon
import com.xw.yunwei.BR
import com.xw.yunwei.databinding.ActivitySetBinding
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import android.net.Uri
import android.provider.Settings
 
/**
 * 设置
 */
class SetActivity : BaseActivity<ActivitySetBinding, SetVM>() {
    override fun getBindingVariable() = BR.viewModel
 
    override fun onResume() {
        super.onResume()
        checkNotice()
        checkLocation()
    }
 
    @SuppressLint("SetTextI18n")
    override fun init() {
        super.init()
        binding.versionTips.text = "版本号${AppUtils.getAppVersionName()}"
    }
 
    override fun setListener() {
        super.setListener()
        binding.noticeLayout.setOnClickListener {
            // 跳转到应用权限设置页面
            val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
                data = Uri.fromParts("package", packageName, null)
                addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            }
            if (intent.resolveActivity(packageManager) != null) {
                startActivity(intent)
            }
        }
 
        binding.locationLayout.setOnClickListener {
            if (binding.locationTips.text == "去授权") {
                val pl = arrayOf(Permission.ACCESS_FINE_LOCATION, Permission.ACCESS_COARSE_LOCATION)
                XXPermissions.with(this).permission(pl).request(object : OnPermissionCallback {
                    override fun onGranted(permissions: MutableList<String>, allGranted: Boolean) { // 权限同意
                        if(allGranted){ binding.locationTips.text = "已开启" }
                    }
 
                    override fun onDenied(permissions: MutableList<String>, doNotAskAgain: Boolean) {
                        super.onDenied(permissions, doNotAskAgain)
                        //权限禁止
                    }
                })
            } else {
//                JumpPermissionManagement.goPermissionSettings(this)
                val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
                    data = Uri.fromParts("package", packageName, null)
                    addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                }
                if (intent.resolveActivity(packageManager) != null) {
                    startActivity(intent)
                }
            }
        }
 
        binding.about.setOnClickListener {
            val versionCode = AppUtils.getAppVersionCode()
            viewModel.getVersion {
                if (versionCode < (it.forceUpdateFlag ?: 0)) {
                    UpdateManager.instance!!
                        .setContext(this@SetActivity)
                        .apkUrl(it.androidFile ?: "")
                        .updateContent(it.updateDescription ?: "")
                        .updateVersionCode(it.versionCode ?: 1)
                        .updateVersionName(it.version ?: "1.0")
                        .updateForceUpdateFlag(it.forceUpdateFlag ?: 0)
                        .show()
                } else {
                    ToastUtilCommon.show("当前也是最新版本")
                }
            }
        }
 
        binding.logOut.setOnClickListener {
            CommonDialog.showTipsDialog(this, "确认退出当前账号登录吗?", rightBlock = {
                MMKVManager.getInstance().clear()
                lifecycleScope.launch {
                    delay(100)
                    AppUtils.relaunchApp(true)
                }
                true
            })
        }
    }
 
    private fun checkNotice() {
        // 使用 NotificationManagerCompat 检查通知权限状态
        val isEnabled = NotificationManagerCompat.from(this).areNotificationsEnabled()
        binding.switchNotification.isChecked = isEnabled
    }
 
    private fun checkLocation(){
        val result = checkPermission(listOf(Permission.ACCESS_FINE_LOCATION, Permission.ACCESS_COARSE_LOCATION))
        if (result) {
            binding.locationTips.text = "已开启"
        } else {
            binding.locationTips.text = "去授权"
        }
    }
 
    private fun checkPermission(permission: List<String>): Boolean{
        val permissionList: MutableList<String> = ArrayList()
        for (permission in permission) {
            if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
                permissionList.add(permission)
            }
        }
        return permissionList.isEmpty()
    }
}