Android kotlin_相机意图崩溃

时间:2019-03-07 00:03:39

标签: android android-intent kotlin

也许这个问题是多余的,但是这里建议的解决方案并不能解决我的问题。

我是android开发的新手,我正在尝试使用相机意图在我的App中录制视频。我在Android开发人员指南中使用过代码 https://developer.android.com/training/camera/videobasics

首先,我遇到了(onActivityResult不能覆盖任何内容),在这里我发现我应该检查Intent是否可以为空,这解决了引人注目的问题,但导致应用崩溃。 是的,我已将用户功能放在清单文件中。

有解决方案吗?

import android.content.Intent
import android.net.Uri
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.provider.MediaStore
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    val REQUEST_VIDEO_CAPTURE = 1

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btn_record.setOnClickListener {
            Toast.makeText(this, "start recording", Toast.LENGTH_SHORT).show()

            Intent(MediaStore.ACTION_VIDEO_CAPTURE).also { takeVideoIntent ->
                takeVideoIntent.resolveActivity(packageManager)?.also {
                    startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE)
                }
            }   
        }
    }
    override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
        if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
            val videoUri: Uri = intent!!.data
            videoView.setVideoURI(videoUri)
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您需要在声明此活动的AndroidManifest.xml文件中设置android:exported =“ true”。

v-model

答案 1 :(得分:0)

您的项目需要运行时权限才能访问摄像机。 由于它属于危险许可设置。 这是有关获取Camera和mic的运行时权限的文章。您可以使用您的项目。 https://pranaybhalerao.wordpress.com/2018/02/11/run-time-permission-in-androidkotlin/ 希望对您有所帮助。