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 запрашивалось разрешение на использование геолокации, то есть "опасное" разрешение. Насколько я понял, оно так просто не запрашивается, отсюда и возникли проблемы. Документация не помогла. Прошу понятным языком объяснить, как запрашивать разрешение на те или иные действия.
Для начала нужно добавить соответствующие разрешения в манифест:
<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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP