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()
|
}
|
}
|