From 9404fc9fce1d2f8678a5d1e6da2374b7a67783fe Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期四, 10 九月 2026 16:55:57 +0800
Subject: [PATCH] 修复问题,升级版本

---
 app/src/main/java/com/driver/igotrip/ui/mine/setting/SettingActivity.kt |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/app/src/main/java/com/driver/igotrip/ui/mine/setting/SettingActivity.kt b/app/src/main/java/com/driver/igotrip/ui/mine/setting/SettingActivity.kt
index 3887203..ce15998 100644
--- a/app/src/main/java/com/driver/igotrip/ui/mine/setting/SettingActivity.kt
+++ b/app/src/main/java/com/driver/igotrip/ui/mine/setting/SettingActivity.kt
@@ -1,12 +1,16 @@
 package com.driver.igotrip.ui.mine.setting
 
+import android.content.Intent
+import android.provider.Settings
 import android.view.View
 import android.widget.TextView
+import androidx.core.net.toUri
 import cn.sinata.xldutils.utils.clickDelay
 import cn.sinata.xldutils.utils.getVersionName
 import com.driver.emanagercar.ui.base.BaseWebActivity
 import com.driver.igotrip.R
 import com.driver.igotrip.base.BaseEvent
+import com.driver.igotrip.base.Const
 import com.driver.igotrip.base.MyApplication
 import com.driver.igotrip.base.MyBaseActivity
 import com.driver.igotrip.bean.AgreeBean
@@ -15,7 +19,9 @@
 import com.driver.igotrip.netUtls.callNet
 import com.driver.igotrip.netUtls.getMapByAny
 import com.driver.igotrip.ui.DialogUtil
+import com.driver.igotrip.utils.Cache.CacheKey
 import com.driver.igotrip.utils.glide.GlideCacheUtil
+import com.google.android.material.switchmaterial.SwitchMaterial
 import com.tencent.mm.opensdk.modelbase.BaseReq
 import com.tencent.mm.opensdk.modelbase.BaseResp
 import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler
@@ -41,6 +47,8 @@
     private val ll_clear by lazy { find<View>(R.id.ll_clear) }
     private val ll_version by lazy { find<View>(R.id.ll_version) }
     private val tv_qa by lazy { find<View>(R.id.tv_qa) }
+    private val ll_floating_window by lazy { find<View>(R.id.ll_floating_window) }
+    private val sm_floating_window by lazy { find<SwitchMaterial>(R.id.sm_floating_window) }
 
     override fun initView() {
         setTitleText(getString(R.string.设置))
@@ -119,6 +127,36 @@
         ll_version.setOnClickListener {
             callVersion()
         }
+        sm_floating_window.setOnCheckedChangeListener { _, isChecked ->
+            MyApplication.couldShowFloatingWindow = isChecked
+        }
+        ll_floating_window.setOnClickListener {
+            if (!sm_floating_window.isChecked) {
+                if (CacheKey.getKeyStr(Const.REFUSE_FLOATING_WINDOW) != "1") {
+                    //用户没有拒绝过,但是没有授予权限
+                    val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, "package:${packageName}".toUri()).apply {
+                        putExtra("package", packageName)
+                    }
+                    startActivity(intent)
+                } else {
+                    //用户拒绝过
+                    CacheKey.putKeyStr(Const.REFUSE_FLOATING_WINDOW, "")
+                    if (!Settings.canDrawOverlays(this)) {
+                        //没有权限
+                        val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, "package:${packageName}".toUri()).apply {
+                            putExtra("package", packageName)
+                        }
+                        startActivity(intent)
+                    } else {
+                        //有权限
+                        sm_floating_window.isChecked = true
+                    }
+                }
+            } else {
+                sm_floating_window.isChecked = false
+                CacheKey.putKeyStr(Const.REFUSE_FLOATING_WINDOW, "1")
+            }
+        }
     }
 
 
@@ -163,4 +201,8 @@
         }
     }
 
+    override fun onResume() {
+        super.onResume()
+        sm_floating_window.isChecked = Settings.canDrawOverlays(this) && CacheKey.getKeyStr(Const.REFUSE_FLOATING_WINDOW) != "1"
+    }
 }
\ No newline at end of file

--
Gitblit v1.7.1