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.