栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

kotlin

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kotlin

前言:有时候在执行一系列流程时,需要去确保定位服务是打开的。这个时候会弹出dialog让我们去设置,如果设置不成功,回来之后点击下一步,还是让你去设置,直到成功为止,才能往下走。

1. 先看效果(布局有点丑)

首先将我们的定位服务开关关闭,点击下一步会出现如下提示:

点击去设置将其服务位置打开:

再返回App后,点击下一步则会显示定位服务已打开:

2. 实现代码 2.1 获取定位服务是否打开的api
private lateinit var locationManager: LocationManager
locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
// 位置服务是否打开
val providerEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
2.2 跳转到位置服务设置界面
// REQUEST_LOCATION_SETTING 自己定义请求码 比如:REQUEST_LOCATION_SETTING = 110
startActivityForResult(Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS),REQUEST_LOCATION_SETTING)
2.2 自定义的dialog
    private fun showSelfTipsDialog(
        context: Context,
        title: String,
        content: String,
        onPositiveButton: (() -> Unit)? = null,
        onNegativeButton: (() -> Unit)? = null
    ): AlertDialog {
        val dialog = AlertDialog.Builder(context)
            .setTitle(title)
            .setPositiveButton(R.string.positive_click) { _, _ ->
                //未开启,跳转到系统定位页面
                startActivityForResult(
                    Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS),
                    REQUEST_LOCATION_SETTING
                )
                onPositiveButton?.invoke()
            }
            .setNegativeButton(R.string.negative_click) { _, _ ->
                // 点击取消的话,点击不了下一步
                onNegativeButton?.invoke()
            }
            .setCancelable(false)
            .create()
        dialog.setMessage(content)
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
        return dialog
    }
2.3 从设置页回来后再次检查
    
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        Log.d(TAG, "onActivityResult...requestCode= $requestCode")
        when (requestCode) {
            REQUEST_LOCATION_SETTING -> {
                val providerEnabled =
                    locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
                if (!providerEnabled) {
                    Log.d(TAG, "providerEnabled...providerEnabled= $providerEnabled")
                    showSelfTipsDialog(
                        context,
                        getString(R.string.settings_location),
                        getString(R.string.settings_location_content),
                        onPositiveButton = {
                            Log.d(TAG, "go to location setting page. ")
                        },
                        onNegativeButton = {
                            Log.d(TAG, "Hi bro,please make sure the permission passed. ")
                        }
                    ).show()
                }
            }
        }
    }
2.4 最后在onCreate()方法里面调用
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        context = this
        setContentView(R.layout.wifi_ap_activity_main)
        locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
        findViewById
总结

到此就可以实现进行下一步的跳转提示了。
(如果错误,欢迎批评指正,请大佬轻喷)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878420.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号