我正在从屏幕上捕获视频的应用程序。以前,我曾使用StartactivityForresult方法来发送意图以进行权限对话框。但是现在被弃用了。这是旧代码:

问题描述 投票:0回答:1
mProjectionManager = getSystemService(MediaProjectionManager::class.java) val startMediaProjection = registerForActivityResult( ActivityResultContracts.StartActivityForResult() ) { result -> if (result.resultCode == RESULT_OK) { mMediaProjection = mProjectionManager?.getMediaProjection(result.resultCode, result.data!!) } } startMediaProjection.launch(mProjectionManager?.createScreenCaptureIntent())

尽管旧代码运行良好,但是新代码有此错误:
java.lang.illegalStateException: lifecycleOwner com.cafedabestan.whateboard.MyActivity@beb74c9 is attemping to register while current state is RESUMED. lifecycleOwners must call register before they are started.

我将此代码放在同一地点旧代码。错误通过尝试捕获

导致错误
	

从[活动文档中获得结果:


当启动结果的活动时,并且在记忆密集型操作(如相机使用)的情况下,几乎可以确定的是,您的过程和活动将由于记忆力较低而被破坏。

出于这个原因,活动结果API将启动其他活动的位置中的结果回调。由于在重新创建过程和活动时,需要可用结果回调,
android kotlin
1个回答
0
投票

因此,您需要无条件地致电registerForActivityResult作为创建活动 /片段的一部分(无论代码中的

it
中,无论是什么),然后在您真正想触发它时调用

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.