【发布时间】:2019-03-07 00:03:38
【问题描述】:
也许这个问题是多余的,但这里建议的解决方案并没有解决我的问题。
我是 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)
}
}
}
【问题讨论】:
-
什么是崩溃日志?
-
java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.VIDEO_CAPTURE cmp=com.android.camera2/com.android.camera.VideoCamera } 令人惊讶的是,解决方案是从清单文件中删除权限!
-
java.lang.SecurityException: Permission Denial:当您的应用无权访问相机或图库时发生异常,以便为应用提供相机和图库应用权限 运行时权限 .在android os 6.0之前不需要运行时权限,但是如果你使用的是5.0以上的android版本,那么你需要运行时权限。
-
!!运算符用于显式告诉编译器该属性不为空,如果为空则抛出异常,因此您应该使用?进行安全检查
标签: android android-intent kotlin