Каждый раз, когда я запускаю проект, программа запрашивает разрешения для определения местоположения. После принятия приглашение исчезает, и пользователь может войти в город. При нажатии на кнопку «получить местоположение» должны отображаться широта и долгота ... однако программа просто закрывается.
Исключение в этой строке: val address = addresses.get (0) Вот MainActivity.kt
import android.Manifest
import android.content.pm.PackageManager
import android.location.Geocoder
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import kotlinx.android.synthetic.main.activity_main.button
import kotlinx.android.synthetic.main.activity_main.editText
import kotlinx.android.synthetic.main.activity_main.textView2
import java.util.Locale
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.isEnabled = false
if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION),
111)
else
button.isEnabled = true
button.setOnClickListener {
var city = editText.text.toString()
var gc = Geocoder(this, Locale.getDefault())
var addresses = gc.getFromLocationName(city,2)
val address = addresses.get(0)
textView2.visibility = View.VISIBLE
textView2.text = "${address.latitude} \n ${address.longitude}\n ${address.locality}"
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
)
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if(requestCode == 111 && grantResults[0]==PackageManager.PERMISSION_GRANTED)
button.isEnabled = true
}
}