【问题标题】:Cannot access '<init>': it is private in 'LocationRequest'无法访问“<init>”:它在“LocationRequest”中是私有的
【发布时间】:2021-11-17 05:57:09
【问题描述】:

我是 Kotlin 的新手,我正在尝试实时获取位置并在 toast 中显示坐标。问题是我无法继续使用代码,因为它没有检测到 IniciartLocationRequest() 函数中的 LocationRequest ()。有什么想法吗?

下面的代码是mainActivity(还有待完成)

package com.example.ubicacion

import android.annotation.SuppressLint
import android.content.pm.PackageManager
import android.location.LocationRequest
import android.os.Bundle
import android.os.Looper
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import com.google.android.gms.location.FusedLocationProviderClient
import com.google.android.gms.location.LocationCallback
import com.google.android.gms.location.LocationResult
import com.google.android.gms.location.LocationServices

class MainActivity : AppCompatActivity() {

    private val permisoFineLocation = android.Manifest.permission.ACCESS_FINE_LOCATION
    private val permisoCoarseLocation = android.Manifest.permission.ACCESS_COARSE_LOCATION

    private val codigoSolicitudPermiso = 100

    private lateinit var fusedLocationClient: FusedLocationProviderClient
    private lateinit var locationRequest: LocationRequest

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
        iniciarLocationRequest()
    }

    private fun iniciarLocationRequest() {
        locationRequest = LocationRequest()


    }

    private fun validarPermisosUbicacion(): Boolean {
        val hayUbicacionPrecisa = ActivityCompat.checkSelfPermission(
            this,
            permisoFineLocation
        ) == PackageManager.PERMISSION_GRANTED
        val hayUbicacionOrdinaria = ActivityCompat.checkSelfPermission(
            this,
            permisoCoarseLocation
        ) == PackageManager.PERMISSION_GRANTED

        return hayUbicacionPrecisa && hayUbicacionOrdinaria
    }

    @SuppressLint("MissingPermission")
    private fun obtenerUbicacion() {
        /*fusedLocationClient?.lastLocation?.addOnSuccessListener(this,
            object : OnSuccessListener<Location> {
                override fun onSuccess(p0: Location?) {
                    if (p0 != null) {
                        Toast.makeText(
                            applicationContext,
                            p0.latitude.toString() + "-" + p0.longitude.toString(),
                            Toast.LENGTH_LONG
                        ).show()
                    }
                }
            })*/

        val callback = object : LocationCallback() {

            override fun onLocationResult(p0: LocationResult) {
                super.onLocationResult(p0)
                for (ubicacion in p0.locations) {
                    Toast.makeText(applicationContext, "a", Toast.LENGTH_SHORT).show()
                }
            }
        }
        fusedLocationClient.requestLocationUpdates(
            locationRequest,
            callback,
            Looper.getMainLooper()
        )
    }

    private fun pedirPermisos() {
        val deboProveerContexto =
            ActivityCompat.shouldShowRequestPermissionRationale(this, permisoFineLocation)

        if (deboProveerContexto) {
            //Mandar mensaje con expliacion adicinal
            solicitudPermiso()
        } else {
            solicitudPermiso()
        }
    }

    private fun solicitudPermiso() {
        requestPermissions(
            arrayOf(permisoCoarseLocation, permisoFineLocation),
            codigoSolicitudPermiso
        )
    }

    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)

        when (requestCode) {
            codigoSolicitudPermiso -> {
                if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    //obtener Ubicacion
                    obtenerUbicacion()
                } else {
                    Toast.makeText(
                        this,
                        "No se dio permiso para acceder a la ubicacion",
                        Toast.LENGTH_SHORT
                    ).show()
                }
            }
        }
    }

    override fun onStart() {
        super.onStart()

        if (validarPermisosUbicacion()) {
            obtenerUbicacion()
        } else {
            pedirPermisos()
        }
    }

【问题讨论】:

    标签: android kotlin location


    【解决方案1】:

    你从LocationRequest.Builder得到LocationRequest

    【讨论】:

    • 还有什么其他方法可以调用我拥有的函数?因为无论如何我总是会出错
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-30
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    相关资源
    最近更新 更多