【问题标题】:How to solve java.lang.SecurityException while trying to take a photo using camera in Kotlin?尝试在 Kotlin 中使用相机拍照时如何解决 java.lang.SecurityException?
【发布时间】:2021-01-04 01:01:05
【问题描述】:

我正在尝试使用以下功能在 kotlin 中拍照:

@JavascriptInterface
fun generate() {
    val photoUri = Uri.fromFile(photo)
    val imageCaptureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
        .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
        .putExtra(MediaStore.EXTRA_OUTPUT, photoUri)
    startActivityForResult(imageCaptureIntent, GO_TO_CARD_REQUEST_CODE)
}

我的清单已授予以下权限和功能:

<uses-feature android:name="android.hardware.camera.any" android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />

启动活动时,Logcat 中会显示异常: “java.lang.SecurityException:权限拒绝:启动意图 { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.android.camera/.Camera”。相机应用程序甚至没有启动。如何解决这个错误?感谢您的帮助。

【问题讨论】:

  • 删除CAMERA 权限。你不需要那个来使用ACTION_IMAGE_CAPTURE

标签: android kotlin camera


【解决方案1】:

CAMERA 权限是指如果您通过 Android SDK 的相机 API 或它们周围的库直接在您的应用中使用相机。 ACTION_IMAGE_CAPTURE 启动一个外部相机应用程序 - 那个 应用程序使用 API 并需要权限。所以,最简单的解决办法就是去掉CAMERA权限。

【讨论】:

    猜你喜欢
    • 2018-06-19
    • 2021-08-09
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多