Skip to content

Instantly share code, notes, and snippets.

@ktvipin27
Last active June 27, 2020 07:34
Show Gist options
  • Save ktvipin27/20c3a0574ba0104d85662c5e7d4157b5 to your computer and use it in GitHub Desktop.
Save ktvipin27/20c3a0574ba0104d85662c5e7d4157b5 to your computer and use it in GitHub Desktop.
PermissionFragment for cameraX sample
class PermissionFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (!hasPermissions(requireContext())) {
requestPermissions( REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS )
} else {
findNavController().popBackStack()
}
}
override fun onRequestPermissionsResult(
requestCode: Int, permissions: Array<String>, grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == REQUEST_CODE_PERMISSIONS) {
val totalGranted = grantResults.count { PackageManager.PERMISSION_GRANTED == it }
if (totalGranted == grantResults.size) {
findNavController().popBackStack()
} else {
toast("Permission request denied")
requestPermissions( REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS )
}
}
}
companion object {
private const val REQUEST_CODE_PERMISSIONS = 101
private val REQUIRED_PERMISSIONS = arrayOf(
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
fun hasPermissions(context: Context) = REQUIRED_PERMISSIONS.all {
ContextCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment