2
votes

I am new to Kotlin and I have an error like this in my onActivityResult method

'Type mismatch: inferred type is Intent? but Intent was expected'

 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()
    }

Error is in this line when I use data from onActivity result it gives me an error which I mentioned above:

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

1 Answers

2
votes

In Kotlin there are nullable types, Intent? and Intent aren't the same type. data:Intent? means that your data can be null.

getMediaProjection(resultCode:Int, data:Intent) method wants your data to be of type Intent which means it can't accept null values. So you have to either cast it to not-null value with !! operator or check if it is not null:

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

In this case automatically knows that data is not null, so it doesn't throw error.