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