简体   繁体   English

如何在 Kotlin 上启用 GPS 位置?

[英]How to enable GPS Location on Kotlin?

My Program is display dialog only but my Gps Location is not enabled this is my code look like我的程序只是显示对话框,但我的 Gps 位置未启用这是我的代码看起来像

*Ignore this text line. *忽略此文本行。 This text line is for approval purpose only to post this question.此文本行仅用于发布此问题的批准目的。 thanks for answering this question.感谢您回答这个问题。 have a nice day:) *祝你今天过得愉快:) *

this is my home Initialize这是我的家

private fun homeInit() {
        btn_create_order.setOnClickListener {
            if (isPermissionsAllowed()) {
                val pickupLocation = Intent(this, PickupOrderActivity::class.java)
                startActivity(pickupLocation)
            }
            else{
                askForPermissions()
            }
        }
    }

And this is the permission这是许可

 private fun isPermissionsAllowed(): Boolean {
    return ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED &&
            ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED &&
            ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_BACKGROUND_LOCATION) == PackageManager.PERMISSION_GRANTED
}

private fun askForPermissions(): Boolean {
    if (!isPermissionsAllowed()) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(this as Activity,Manifest.permission.ACCESS_FINE_LOCATION) &&
            ActivityCompat.shouldShowRequestPermissionRationale(this as Activity,Manifest.permission.ACCESS_COARSE_LOCATION) &&
            ActivityCompat.shouldShowRequestPermissionRationale(this as Activity,Manifest.permission.ACCESS_BACKGROUND_LOCATION) ) {

        } else {
            ActivityCompat.requestPermissions(this as Activity,arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),PERMISSION_REQUEST_CODE)
        }
        return false
    }
    return true
}

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
    when (requestCode) {
        PERMISSION_REQUEST_CODE -> {
            if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED &&
                grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // permission is granted, you can perform your operation here
                val createOrder = Intent(this, PickupOrderActivity::class.java)
                startActivity(createOrder)

            } else {
                // permission is denied, you can ask for permission again, if you want
                showPermissionDeniedDialog()
            }
            return
        }
        else -> {

        }
    }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
}

And this is the Dialog这是对话框

private fun showPermissionDeniedDialog() {
    AlertDialog.Builder(this)
        .setTitle("Permission Denied")
        .setMessage("Permission is denied, Please allow permissions from App Settings.")
        .setPositiveButton("App Settings",
            DialogInterface.OnClickListener { dialogInterface, i ->
                val intent = Intent()
                intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
                val uri = Uri.fromParts("package", packageName, null)
                intent.data = uri
                startActivity(intent)
            })
        .setNegativeButton("Cancel", null)
        .show()
}

You can use fused location For Enabling GPS and get the user location.您可以使用融合位置来启用 GPS 并获取用户位置。

Official Documentation https://developer.android.com/training/location官方文档https://developer.android.com/training/location

Code Example: https://github.com/ideeastudios/android-fused-location-provider-example代码示例: https://github.com/ideeastudios/android-fused-location-provider-example

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM