Reputation: 816
I'm trying to use ActivityResultContracts.CaptureVideo(), but when I run it on API 33, it's crashing with this stacktrace:
> 2022-09-19 20:32:02.047 577-601/system_process W/WindowManager: Exception thrown during dispatchAppVisibility Window{5b4304c u0
> com.my.package/com.my.package.activities.MainActivity
> EXITING}
> android.os.DeadObjectException
> at android.os.BinderProxy.transactNative(Native Method)
> at android.os.BinderProxy.transact(BinderProxy.java:584)
> at android.view.IWindow$Stub$Proxy.dispatchAppVisibility(IWindow.java:536)
> at com.android.server.wm.WindowState.sendAppVisibilityToClients(WindowState.java:3489)
> at com.android.server.wm.WindowContainer.sendAppVisibilityToClients(WindowContainer.java:1199)
> at com.android.server.wm.WindowToken.setClientVisible(WindowToken.java:398)
> at com.android.server.wm.ActivityRecord.setClientVisible(ActivityRecord.java:6564)
> at com.android.server.wm.ActivityRecord.postApplyAnimation(ActivityRecord.java:5280)
> at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:5235)
> at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:5239)
> at com.android.server.wm.AppTransitionController.handleClosingApps(AppTransitionController.java:1098)
> at com.android.server.wm.AppTransitionController.handleAppTransitionReady(AppTransitionController.java:286)
> at com.android.server.wm.RootWindowContainer.checkAppTransitionReady(RootWindowContainer.java:975)
> at com.android.server.wm.RootWindowContainer.performSurfacePlacementNoTrace(RootWindowContainer.java:842)
> at com.android.server.wm.RootWindowContainer.performSurfacePlacement(RootWindowContainer.java:784)
> at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop(WindowSurfacePlacer.java:177)
> at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:126)
> at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:115)
> at com.android.server.wm.WindowSurfacePlacer$Traverser.run(WindowSurfacePlacer.java:57)
> at android.os.Handler.handleCallback(Handler.java:942)
> at android.os.Handler.dispatchMessage(Handler.java:99)
> at android.os.Looper.loopOnce(Looper.java:201)
> at android.os.Looper.loop(Looper.java:288)
> at android.os.HandlerThread.run(HandlerThread.java:67)
> at com.android.server.ServiceThread.run(ServiceThread.java:44)
The relevant code looks like :
private fun takeVideo() {
val media = File.createTempFile("temp_file", ".mp4", this.requireContext().cacheDir)
val fileUri = FileProvider.getUriForFile(this.requireContext(), "${requireContext().packageName}.provider", media)
this.fileUri = Uri.parse(media.absolutePath)
this.takeVideoResult.launch(fileUri)
}
/**
* A function to handle registering an activity result for video capture
*/
private val takeVideoResult = registerForActivityResult(ActivityResultContracts.CaptureVideo()) { success ->
if (success) {
this.fileUri?.let { uri ->
this.attachmentUris.add(uri)
this.updateAttachmentViews()
}
}
}
Is this a problem with API 33? It seems that all the other API levels our app supports are working fine (Specifically I've also tested API 32, 30, and 28) Is there anything obvious that I'm missing that I'm doing wrong that could fix this?
Upvotes: 2
Views: 561