首页 > 解决方案 > Android kotlin_Camera Intent 崩溃

问题描述

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

我是 android 开发的新手,我正在尝试使用相机意图在我的应用程序中录制视频。我在 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)
        }
    }
}

标签: androidandroid-intentkotlin

解决方案


您的项目需要运行时权限才能访问相机。因为它属于危险的权限集。这是一篇关于获取相机和麦克风的运行时权限的文章。您可以将其用于您的项目。 https://pranaybhalerao.wordpress.com/2018/02/11/run-time-permission-in-androidkotlin/ 希望它会有所帮助。


推荐阅读