FusedLocation doesnt allow access to last location even though I have location permission

Viewed 13

So I'm trying to get the last location from fusedLocationProvider. I ask for the permission in the manifest and in the activity but i still get the error saying that I'm missing required permissions

Here is the most important parts of the code

`

package com.example.graterenowa

import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.icu.util.TimeUnit
import android.location.Location
import android.location.LocationListener
import android.location.LocationManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.example.graterenowa.databinding.ActivityMainBinding
import com.example.graterenowa.databinding.ActivityMapsBinding
import com.google.android.gms.location.*
import com.google.android.gms.location.Priority.PRIORITY_HIGH_ACCURACY
import com.google.android.material.slider.Slider
import javax.xml.datatype.DatatypeConstants.MINUTES
import javax.xml.datatype.DatatypeConstants.SECONDS
import kotlin.time.DurationUnit

class MainActivity : AppCompatActivity() {

    


    private lateinit var fusedLocationProviderClient: FusedLocationProviderClient

    
    private lateinit var locationRequest: LocationRequest

   



    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)


        // function checking permission
        isLocationPerrmisionGranted()

        

        fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)

       

        locationRequest = LocationRequest.create().apply {
            interval = 100
            fastestInterval = 50
            priority = Priority.PRIORITY_HIGH_ACCURACY
            maxWaitTime = 100
        }


    }


    private fun isLocationPerrmisionGranted(): Boolean{
        if(ActivityCompat.checkSelfPermission(this,android.Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED)
        {
            ActivityCompat.requestPermissions(this,
                arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION),1)

            return false
        }

        fusedLocationProviderClient.lastLocation.addOnSuccessListener { location: Location? ->
            
        }

        return true
    }


    override fun onRequestPermissionsResult(requestCode :Int,
     permissions : Array<String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if (grantResults.size > 0  && grantResults[0] ==
            PackageManager.PERMISSION_GRANTED && requestCode == 1) {
            if(ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION)==PackageManager.PERMISSION_GRANTED) {
                fusedLocationProviderClient.lastLocation.addOnSuccessListener { location: Location? ->
                   
                }
            }


        }else{
      
            isLocationPerrmisionGranted()
    }
}
}

`

As I said I put the required permissions in the manifest and ask for them in the mainACtivity on the run time. Can please somebody tell me why is there still an error.

0 Answers
Related