Skip to content

Instantly share code, notes, and snippets.

@sabiou
Created May 26, 2022 15:38
Show Gist options
  • Save sabiou/a2b3a0d690411ad18714f4e48d9d5041 to your computer and use it in GitHub Desktop.
Save sabiou/a2b3a0d690411ad18714f4e48d9d5041 to your computer and use it in GitHub Desktop.
class MainActivity : AppCompatActivity() {
companion object {
private const val PERMISSION_REQUEST_CODE = 20
}
private lateinit var binding: ActivityMainBinding
private lateinit var layout: View
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, persistentState)
binding = ActivityMainBinding.inflate(layoutInflater)
layout = binding.root
setContentView(layout)
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
) {
if (ActivityCompat.shouldShowRequestPermissionRationale(
this,
Manifest.permission.ACCESS_FINE_LOCATION
)
) {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
PERMISSION_REQUEST_CODE
)
} else {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
PERMISSION_REQUEST_CODE
)
}
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
when (requestCode) {
PERMISSION_REQUEST_CODE -> {
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
// permission denied
layout.showSnackbar(
R.string.location_permission_required,
Snackbar.LENGTH_INDEFINITE
) {
action(R.string.action_ok) {
// open Settings to grant location permission
val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
startActivity(intent)
}
}
} else {
// permission granted
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment