package com.mattintech.lchat import android.Manifest import android.util.Log import android.content.pm.PackageManager import android.os.Build import android.os.Bundle import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.google.android.material.snackbar.Snackbar import com.mattintech.lchat.databinding.ActivityMainBinding import com.mattintech.lchat.utils.LOG_PREFIX import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class MainActivity : AppCompatActivity() { companion object { private const val TAG = LOG_PREFIX + "MainActivity:" } private lateinit var binding: ActivityMainBinding private val locationPermissionRequest = registerForActivityResult( ActivityResultContracts.RequestMultiplePermissions() ) { permissions -> when { permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> { Log.d(TAG, "Location permission granted") } else -> { Snackbar.make( binding.root, getString(R.string.permission_required), Snackbar.LENGTH_LONG ).show() } } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Log.d(TAG, "onCreate") binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) setSupportActionBar(binding.toolbar) checkPermissions() } private fun checkPermissions() { val permissionsToRequest = mutableListOf() if (ContextCompat.checkSelfPermission( this, Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED ) { permissionsToRequest.add(Manifest.permission.ACCESS_FINE_LOCATION) } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (ContextCompat.checkSelfPermission( this, Manifest.permission.NEARBY_WIFI_DEVICES ) != PackageManager.PERMISSION_GRANTED ) { permissionsToRequest.add(Manifest.permission.NEARBY_WIFI_DEVICES) } } if (permissionsToRequest.isNotEmpty()) { Log.d(TAG, "Requesting permissions: $permissionsToRequest") locationPermissionRequest.launch(permissionsToRequest.toTypedArray()) } else { Log.d(TAG, "All permissions already granted") } } }