From f67802a41f9e01444d1115f34ecc6e1beb05fc3b Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期五, 12 五月 2023 11:24:29 +0800
Subject: [PATCH] 定位权限说明弹窗

---
 app/src/main/java/com/fuban/user/ui/MainActivity.kt |   86 ++++++++++++++++++++++++++++++++-----------
 1 files changed, 64 insertions(+), 22 deletions(-)

diff --git a/app/src/main/java/com/fuban/user/ui/MainActivity.kt b/app/src/main/java/com/fuban/user/ui/MainActivity.kt
index 6b13a10..866cc41 100644
--- a/app/src/main/java/com/fuban/user/ui/MainActivity.kt
+++ b/app/src/main/java/com/fuban/user/ui/MainActivity.kt
@@ -30,6 +30,7 @@
 import com.fuban.user.ui.crosscity.*
 import com.fuban.user.dialog.BannerDialog
 import com.fuban.user.dialog.AlertDialog
+import com.fuban.user.dialog.TipDialog
 import com.fuban.user.dialog.UserRuleDialog
 import com.fuban.user.ui.login.LoginActivity
 import com.fuban.user.ui.logistics.LogisticsFragment
@@ -140,18 +141,28 @@
             startActivity<ServiceActivity>()
         }
         iv_scan.setOnClickListener {
-            if (checkLogin())
-                RxPermissions(this).request(Manifest.permission.CAMERA).subscribe {
-                    if (it)
-                        startActivity<ScanActivity>(
-                            "startLat" to startLat,
-                            "startLon" to startLon,
-                            "startName" to startName
-                        )
-                    else
-                        myToast("请在应用权限页面开启相机权限")
+            if (checkLogin()) {
+                if (!RxPermissions(this).isGranted(Manifest.permission.CAMERA) //没有权限且明确拒绝就不再申请权限
+                    && SPUtils.instance().getBoolean(Const.User.IS_REFUSE_PERMISSION_CAMERA)
+                ) {
+                    myToast("请在应用权限页面开启相机权限")
+                } else {
+                    RxPermissions(this).request(Manifest.permission.CAMERA).subscribe {
+                        if (it)
+                            startActivity<ScanActivity>(
+                                "startLat" to startLat,
+                                "startLon" to startLon,
+                                "startName" to startName
+                            )
+                        else{
+                            myToast("请在应用权限页面开启相机权限")
+                            SPUtils.instance().put(Const.User.IS_REFUSE_PERMISSION_CAMERA,true).apply()
+                        }
+                    }
                 }
+            }
         }
+
     }
 
 
@@ -177,16 +188,21 @@
         isOpen = intent.getBooleanExtra("isOpen", false)
         lat = intent.getDoubleExtra("lat", 0.0)
         lon = intent.getDoubleExtra("lon", 0.0)
-        if (!isOpen){
+        if (!isOpen) {
             initLocation {
                 initLocationS { b, fucS ->
                     cl_title.visible()
                     initTwoView(b, fucS, FBApplication.lat, FBApplication.lon)
                 }
             }
-        }else{
+        } else {
             cl_title.visible()
-            initTwoView(isOpen, func?: arrayListOf(), FBApplication.lat, FBApplication.lon)
+            initTwoView(
+                isOpen,
+                func ?: arrayListOf(),
+                if (lat != 0.0) lat else FBApplication.lat,
+                if (lon != 0.0) lon else FBApplication.lon
+            )
         }
     }
 
@@ -235,16 +251,42 @@
     }
 
     private fun initLocation(function: () -> Unit) {
-        val disposable =
-            RxPermissions(this@MainActivity).request(Manifest.permission.ACCESS_FINE_LOCATION)
-                .subscribe {
-                    if (it) {
-                        function()
-                    } else {
-
+        if (!RxPermissions(this).isGranted(Manifest.permission.ACCESS_FINE_LOCATION) //没有权限且明确拒绝就不再申请权限
+            && SPUtils.instance().getBoolean(Const.User.IS_REFUSE_PERMISSION_LOCATION)
+        ) {
+            initTwoView(false, arrayListOf(), 0.0, 0.0)
+        } else {
+            if (!RxPermissions(this).isGranted(Manifest.permission.ACCESS_FINE_LOCATION)){
+                val tipDialog = TipDialog()
+                tipDialog.arguments = bundleOf("ok" to "去授权",
+                    "msg" to "《福伴出行》需要获取您的当前位置信息,用于查询当前城市是否开通服务、附近是否有可用司机,并且将当前位置作为上车点以便您快速叫车。如果拒绝定位权限,您需要手动选择服务城市和上车点。")
+                tipDialog.show(supportFragmentManager,"ask")
+                tipDialog.setCallback(object :TipDialog.OnClickCallback{
+                    override fun onOk() {
+                        val disposable =
+                            RxPermissions(this@MainActivity).request(Manifest.permission.ACCESS_FINE_LOCATION)
+                                .subscribe {
+                                    if (it) {
+                                        function()
+                                    } else {
+                                        SPUtils.instance().put(Const.User.IS_REFUSE_PERMISSION_LOCATION, true)
+                                            .apply()
+                                        initTwoView(false, arrayListOf(), 0.0, 0.0)
+                                    }
+                                }
+                        onBindHelper(disposable)
                     }
-                }
-        onBindHelper(disposable)
+
+                    override fun onCancel() {
+                        SPUtils.instance().put(Const.User.IS_REFUSE_PERMISSION_LOCATION, true)
+                            .apply()
+                        initTwoView(false, arrayListOf(), 0.0, 0.0)
+                    }
+                })
+            }else{
+                function()
+            }
+        }
     }
 
     private fun showAlert() {

--
Gitblit v1.7.1