From ab4bba0f2731f41061e84ef69daf642496c95c75 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Fri, 17 Sep 2021 13:52:54 +0200 Subject: [PATCH] add cam permission check Signed-off-by: Andy Scherzinger --- .../talk/controllers/ChatController.kt | 36 ++++++++++++++++++- app/src/main/res/values/strings.xml | 1 + 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index ae5749e6c..05e3fa156 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -991,6 +991,17 @@ class ChatController(args: Bundle) : } } + private fun isCameraPermissionGranted(): Boolean { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + return PermissionChecker.checkSelfPermission( + context!!, + Manifest.permission.CAMERA + ) == PermissionChecker.PERMISSION_GRANTED + } else { + true + } + } + private fun startAudioRecording(file: String) { binding.messageInputView.audioRecordDuration.base = SystemClock.elapsedRealtime() binding.messageInputView.audioRecordDuration.start() @@ -1080,6 +1091,15 @@ class ChatController(args: Bundle) : ) } + private fun requestCameraPermissions() { + requestPermissions( + arrayOf( + Manifest.permission.CAMERA + ), + REQUEST_CAMERA_PERMISSION + ) + } + private fun checkReadOnlyState() { if (currentConversation != null && isAlive()) { if (currentConversation?.shouldShowLobby(conversationUser) ?: false || @@ -1275,6 +1295,15 @@ class ChatController(args: Bundle) : Toast.LENGTH_LONG ).show() } + } else if (requestCode == REQUEST_CAMERA_PERMISSION) { + if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + Log.d(TAG, "launch cam activity since permission for cam has been granted") + startActivityForResult(TakePhotoActivity.createIntent(context!!), REQUEST_CODE_PICK_CAMERA) + } else { + Toast + .makeText(context, context?.getString(R.string.read_storage_no_permission), Toast.LENGTH_LONG) + .show() + } } } @@ -2572,7 +2601,11 @@ class ChatController(args: Bundle) : } fun sendPictureFromCamIntent() { - startActivityForResult(TakePhotoActivity.createIntent(context!!), REQUEST_CODE_PICK_CAMERA) + if (!isCameraPermissionGranted()) { + requestCameraPermissions() + } else { + startActivityForResult(TakePhotoActivity.createIntent(context!!), REQUEST_CODE_PICK_CAMERA) + } } companion object { @@ -2589,6 +2622,7 @@ class ChatController(args: Bundle) : private const val AGE_THREHOLD_FOR_DELETE_MESSAGE: Int = 21600000 // (6 hours in millis = 6 * 3600 * 1000) private const val REQUEST_CODE_CHOOSE_FILE: Int = 555 private const val REQUEST_RECORD_AUDIO_PERMISSION = 222 + private const val REQUEST_CAMERA_PERMISSION = 223 private const val REQUEST_CODE_PICK_CAMERA: Int = 333 private const val OBJECT_MESSAGE: String = "{object}" private const val MINIMUM_VOICE_RECORD_DURATION: Int = 1000 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2fa2f053a..8f8b266cb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -478,4 +478,5 @@ Switch camera Toggle torch Error taking picture + Taking a photo is not possible without permissions