TransWikia.com

Запрос разрешения на использование геолокации Kotlin

Stack Overflow на русском Asked by ezh on December 2, 2020

class MapsActivity : AppCompatActivity(), OnMapReadyCallback {

private lateinit var mMap: GoogleMap

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

    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    val mapFragment = supportFragmentManager
            .findFragmentById(R.id.map) as SupportMapFragment
    mapFragment.getMapAsync(this)


}
override fun onMapReady(googleMap: GoogleMap) {
    mMap = googleMap
    var dumpPos: LatLng
    val btnMyPos: Button = findViewById(R.id.btnMyPos)
    val txtDumpPos: TextView = findViewById(R.id.txtDumpPos)
    val defaultPosition = LatLng(45.078250, 38.894204);
    
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(defaultPosition, 12.0F))
    txtDumpPos.text = mMap.cameraPosition.toString()
    var dumpPosition: LatLng
    txtDumpPos.text = mMap.isMyLocationEnabled.toString()
    mMap.setOnCameraMoveListener {
        dumpPos = mMap.cameraPosition.target
        txtDumpPos.text = dumpPos.toString()
    }
    btnMyPos.setOnClickListener{
        //по нажатию кнопки должно высвечиваться окно запроса разрешения на использование геолокации
    }
    
  }
}

Задача такова, нужно чтобы по нажатии кнопки btnMyPos запрашивалось разрешение на использование геолокации, то есть "опасное" разрешение. Насколько я понял, оно так просто не запрашивается, отсюда и возникли проблемы. Документация не помогла. Прошу понятным языком объяснить, как запрашивать разрешение на те или иные действия.

One Answer

Для начала нужно добавить соответствующие разрешения в манифест:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

и дальше проверять разрешения нету, то запрашивать:

if (ActivityCompat.checkSelfPermission(
                this,
                Manifest.permission.ACCESS_FINE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
                this,
                Manifest.permission.ACCESS_COARSE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED
        ){
            val permissions = arrayOf(Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION)
            ActivityCompat.requestPermissions(this, permissions,0)
        }

если у вас кнопка планируется именно на запрос разрешения то просто вставьте этот код, если же на кнопке вообще будет другое действие висеть, то лучше разрешения запрашивать в методе onStart()/onCreate()

Correct answer by Andrew on December 2, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP