Kotlin:类型不匹配:推断类型是 Intent?但意图是预期的

Posted

技术标签:

【中文标题】Kotlin:类型不匹配:推断类型是 Intent?但意图是预期的【英文标题】:Kotlin : Type mismatch: inferred type is Intent? but Intent was expected 【发布时间】:2021-01-11 21:50:19 【问题描述】:

我是 Kotlin 的新手,在我的 onActivityResult 方法中出现这样的错误

'类型不匹配:推断的类型是 Intent?但意图是预期的'

 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) 
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode  != REQUEST_CODE)
            
                return
            
        if (resultCode != Activity.RESULT_OK)
        
            Toast.makeText(this,"Screen cast permission denied",Toast.LENGTH_LONG).show()
            return
        
        mediaProjectionCallBack = MediaProjectionCallback()
        mediaProjection = projectionManager!!.getMediaProjection(resultCode,data)
        mediaProjection!!.registerCallback(mediaProjectionCallBack,null)
        virtualDisplay = createVirtualDisplay()
        mediaRecorder!!.start()
    

当我使用来自onActivity 的数据时,此行出现错误,结果它给了我上面提到的错误:

mediaProjection = projectionManager!!.getMediaProjection(resultCode,data)

【问题讨论】:

【参考方案1】:

在 Kotlin 中有可以为空的类型,Intent?Intent 不是同一个类型。 data:Intent? 表示你的data 可以是null

getMediaProjection(resultCode:Int, data:Intent) 方法希望您的数据为 Intent 类型,这意味着它不能接受 null 值。因此,您必须使用 !! 运算符将其转换为非空值,或者检查它是否不为空:

if(data != null)
    mediaProjection = projectionManager!!.getMediaProjection(resultCode,data)

在这种情况下自动知道数据不为空,所以它不会抛出错误。

【讨论】:

任何一种解决方案它仍然给我一个错误1.java.lang.RuntimeException: Failure delivering result ResultInfowho=null, request=1000, result=-1, data=Intent (has extras) to activity no.realitylab.arface/no.realitylab.arface.FaceRegionsActivity: java.lang.SecurityException: Media projections2.Caused by: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION@Tuqay 是的,在同一行@Tuqay 你得到的这个错误和上一个不一样,很抱歉我帮不了你,我建议发布这个新错误的问题。祝你有美好的一天

以上是关于Kotlin:类型不匹配:推断类型是 Intent?但意图是预期的的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin - 类型不匹配:推断类型是 Any?但布尔值是预期的

类型不匹配:推断的类型是 String 但在 kotlin 中需要 Charset

kotlin gradle dsl问题:类型不匹配:推断类型是字符串但URI!预计

类型不匹配:推断类型为 Unit 但预期为 Boolean

Android Kotlin - viewBinding 类型不匹配:推断类型为 DrawerLayout 但应为 ConstraintLayout

Kotlin:功能类型不匹配