Skip to main content

Using latest version of sdk 15.6.0, there is a crash by clicking on the new button Take a photo in the message redaction.
The device is on Android 14, here is the stack trace.
 

Fatal Exception: java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.google.android.GoogleCamera/com.android.camera.activity.CaptureActivity clip={text/uri-list hasLabel(0) {U(content)}} (has extras) } from ProcessRecord{31fdd92 30802:com.kiplin.app.staging/u0a483} (pid=30802, uid=10483) with revoked permission android.permission.CAMERA
at android.os.Parcel.createExceptionOrNull(Parcel.java:3057)
at android.os.Parcel.createException(Parcel.java:3041)
at android.os.Parcel.readException(Parcel.java:3024)
at android.os.Parcel.readException(Parcel.java:2966)
at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:2086)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1873)
at android.app.Activity.startActivityForResult(Activity.java:5615)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:780)
at androidx.core.app.ActivityCompat$Api16Impl.startActivityForResult(ActivityCompat.java:854)
at androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:245)
at androidx.activity.ComponentActivity$1.onLaunch(ComponentActivity.java:239)
at androidx.activity.result.ActivityResultRegistry$3.launch(ActivityResultRegistry.java:244)
at androidx.activity.compose.ActivityResultLauncherHolder.launch(ActivityResultRegistry.kt:154)
at androidx.activity.compose.ManagedActivityResultLauncher.launch(ActivityResultRegistry.kt:143)
at androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:47)
at io.intercom.android.sdk.m5.conversation.ui.components.composer.CameraInputButtonKt$PhotoInputButton$2.invoke(CameraInputButton.kt:47)
at io.intercom.android.sdk.m5.conversation.ui.components.composer.CameraInputButtonKt$PhotoInputButton$2.invoke(CameraInputButton.kt:41)
at androidx.compose.foundation.ClickablePointerInputNode$pointerInput$3.invoke-k-4lQ0M(Clickable.kt:895)
at androidx.compose.foundation.ClickablePointerInputNode$pointerInput$3.invoke(Clickable.kt:889)
at androidx.compose.foundation.gestures.TapGestureDetectorKt$detectTapAndPress$2$1.invokeSuspend(TapGestureDetector.kt:255)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:179)
at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:168)
at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:474)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:508)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:497)
at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:368)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine.offerPointerEvent(SuspendingPointerInputFilter.kt:665)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.dispatchPointerEvent(SuspendingPointerInputFilter.kt:544)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.onPointerEvent-H0pRuoY(SuspendingPointerInputFilter.kt:566)
at androidx.compose.foundation.AbstractClickablePointerInputNode.onPointerEvent-H0pRuoY(Clickable.kt:855)
at androidx.compose.foundation.AbstractClickableNode.onPointerEvent-H0pRuoY(Clickable.kt:703)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:317)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:303)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:303)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:303)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:303)
at androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass(HitPathTracker.kt:183)
at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(HitPathTracker.kt:102)
at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog(PointerInputEventProcessor.kt:96)
at androidx.compose.ui.platform.AndroidComposeView.sendMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1446)
at androidx.compose.ui.platform.AndroidComposeView.handleMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1398)
at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(AndroidComposeView.android.kt:1338)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3123)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2804)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3123)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2804)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3123)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2804)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3123)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2804)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3123)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2804)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3123)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2804)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:490)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1904)
at android.app.Activity.dispatchTouchEvent(Activity.java:4403)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:70)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:448)
at android.view.View.dispatchPointerEvent(View.java:15928)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7242)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:7032)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6435)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6492)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6458)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6623)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6466)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6680)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6439)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6492)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6458)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6466)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6439)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:9432)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:9383)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:9352)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9558)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:267)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:335)
at android.os.Looper.loopOnce(Looper.java:162)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8194)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)

Caused by android.os.RemoteException: Remote stack trace:
at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1136)
at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1074)
at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:742)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1290)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1241)



 

Hey @Augustin 
Thank you so much for sharing all the details above.

Looks like, this will need further investigation on our end, so I have escalated this with our Support Engineering team as a conversation. You will receive a reply from them in there as soon as possible.


@aykut.aydin my app encountered exactly the same issue., may I also receive the reply from a technical support with recommendation how to deal with this problem?


Hey @VitaSokolova 

 

This issue has been fixed on the version 15.6.1. So if you update your SDK to 15.6.1 or 15.6.2 (this is the latest version at the moment) you will no longer encounter the issue above. Once you update, if you still experience any issues, please let me know here. 👍

 

https://github.com/intercom/intercom-android/releases


Hi @aykut.aydin  you may already know about this issue, but v15.6.2 contains a dependency from androidx.compose.animation:animation-core:1.6.0, this version caused many crashes and must be updated to 1.6.1. Check this thread in Google’s IssueTracker. 


Hey @VitaSokolova 

 

Thanks for the reply! I will check this with our product team and will provide an update here.


Just an update, the issue which was reported by @VitaSokolova has been fixed in v15.6.3.

 

https://github.com/intercom/intercom-android/releases/tag/15.6.3


Reply