override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val locationManager=getSystemService(Context.LOCATION_SERVICE)as LocationManager // 位置情報のユーザー許可を確認 if (ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED ) { // 許可がなければ許可を求める val permissions = arrayOf(Manifest.permission.ACCESS_FINE_LOCATION) ActivityCompat.requestPermissions(this, permissions, 1000) // 求めた結果はonRequestPermissionsResult return } locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0L,0F,GPSLocationListener()) } // パーミッション許可を求めた結果 override fun onRequestPermissionsResult( requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) if (requestCode==1000 && grantResults[0]==PackageManager.PERMISSION_GRANTED){ //パーミッションが許可された場合 val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager val locationListener = GPSLocationListener() // パーミッション許可を求めた結果を確認しているので不要に思えるが、 // ↓ locationManager.requestLocationUpdates を呼ぶ前にかならず必要なだけ if (ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ return } locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0L,0F,locationListener) } }