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/trip/MapTripFragment.kt |   58 ++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 32 insertions(+), 26 deletions(-)

diff --git a/app/src/main/java/com/fuban/user/ui/trip/MapTripFragment.kt b/app/src/main/java/com/fuban/user/ui/trip/MapTripFragment.kt
index 5fde12f..0754904 100644
--- a/app/src/main/java/com/fuban/user/ui/trip/MapTripFragment.kt
+++ b/app/src/main/java/com/fuban/user/ui/trip/MapTripFragment.kt
@@ -19,10 +19,7 @@
 import cn.sinata.xldutils.gone
 import cn.sinata.xldutils.ioScheduler
 import cn.sinata.xldutils.rxutils.ResultException
-import cn.sinata.xldutils.utils.SpanBuilder
-import cn.sinata.xldutils.utils.myToast
-import cn.sinata.xldutils.utils.optInt
-import cn.sinata.xldutils.utils.toTime
+import cn.sinata.xldutils.utils.*
 import cn.sinata.xldutils.visible
 import com.amap.api.location.AMapLocationClient
 import com.amap.api.location.AMapLocationClientOption
@@ -112,8 +109,8 @@
         mMapView.onCreate(savedInstanceState)
         getNotice()
         getBottomAds()
+        initMap()
         getRxPermission {
-            initMap()
             initLocation()
         }
         initTab()
@@ -381,17 +378,23 @@
     }
 
     fun getRxPermission(function: () -> Unit) {
-        val disposable =
-            RxPermissions(activity!!).request(Manifest.permission.ACCESS_FINE_LOCATION)
-                .subscribe {
-                    if (it) {
-                        function()
-                    } else {
-                        function()
-                        myToast("没有定位权限")
+        if (!RxPermissions(requireActivity()).isGranted(Manifest.permission.ACCESS_FINE_LOCATION) //没有权限且明确拒绝就不再申请权限
+            && SPUtils.instance().getBoolean(Const.User.IS_REFUSE_PERMISSION_LOCATION)){
+            function()
+//            myToast("没有定位权限")
+        }else{
+            val disposable =
+                RxPermissions(activity!!).request(Manifest.permission.ACCESS_FINE_LOCATION)
+                    .subscribe {
+                        if (it) {
+                            function()
+                        } else {
+                            SPUtils.instance().put(Const.User.IS_REFUSE_PERMISSION_LOCATION,true).apply()
+                            function()
+                        }
                     }
-                }
-        onBindHelper(disposable)
+            onBindHelper(disposable)
+        }
     }
 
     private var locCount = 0L //定位次数
@@ -400,7 +403,7 @@
         val myLocationStyle = MyLocationStyle()
         myLocationStyle.strokeColor(resources.getColor(R.color.colorBrown))
         myLocationStyle.radiusFillColor(resources.getColor(R.color.colorTransBrown))
-        myLocationStyle.interval(3000)
+        myLocationStyle.interval(10000)
         myLocationStyle.anchor(0.5f, 0.5f)
         myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER)//
         myLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromResource(R.mipmap.icon_coordinate))
@@ -419,6 +422,7 @@
             FBApplication.address = it.address
             FBApplication.cityCode = it.extras.getString("adcode") ?: ""
             if (locCount < 1) {
+                Log.e(Const.Tag, "首页:lat:" + mainActivity.lat + ",lon:" + mainActivity.lon)
                 if (mainActivity.lat != 0.0)
                     aMap.animateCamera(
                         CameraUpdateFactory.newLatLngZoom(
@@ -470,18 +474,20 @@
     }
 
     private fun showChangeCity() {
-        val tipDialog = TipDialog()
-        tipDialog.arguments = bundleOf("msg" to "当前城市与定位城市不符,是否切换?")
-        tipDialog.setCallback(object : TipDialog.OnClickCallback {
-            override fun onOk() {
-                activity!!.startActivityForResult<ChooseCityActivity>(501)
-            }
+        if ((requireActivity() as MainActivity).isOpen){
+            val tipDialog = TipDialog()
+            tipDialog.arguments = bundleOf("msg" to "当前城市与定位城市不符,是否切换?")
+            tipDialog.setCallback(object : TipDialog.OnClickCallback {
+                override fun onOk() {
+                    activity!!.startActivityForResult<ChooseCityActivity>(501)
+                }
 
-            override fun onCancel() {
+                override fun onCancel() {
 
-            }
-        })
-        tipDialog.show(childFragmentManager, "clear")
+                }
+            })
+            tipDialog.show(childFragmentManager, "clear")
+        }
     }
 
     private fun initTab() {

--
Gitblit v1.7.1