gpt4 book ai didi

android - Cordova Android - 无法打开相机 - READ_EXTERNAL_STORAGE

转载 作者:行者123 更新时间:2023-12-02 10:12:35 26 4
gpt4 key购买 nike

自从将 Cordova 应用程序移至 Android Studio 后,我尝试在它上打开相机,但现在它已停止工作。

我没有收到任何权限弹出窗口,也没有在用户端显示任何其他内容。

我在 Android 监视器中收到以下错误

com.ontrac.nutshellmobile E/ViewRootImpl: sendUserActionEvent() returned.
E/DatabaseUtils: Writing exception to parcel
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=8324, uid=10182 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:616)
at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:487)
at android.content.ContentProvider$Transport.query(ContentProvider.java:216)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)
at android.os.Binder.execTransact(Binder.java:573)

我的 list 具有以下权限

 <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="26" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.RECORD_VIDEO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

我正在项目结构上运行编译 SDK 版本的 API 26。

我的构建 gradle 文件包含 SDK 版本

minSdkVersion 23
targetSdkVersion 25
compileSdkVersion 26
buildToolsVersion '26.0.0'

我尝试将权限移至 Cordova Android list ,但没有成功。我似乎无法弄清楚是什么导致了错误。

任何帮助将不胜感激。如果需要,我可以提供更多信息。

最佳答案

为了打开相机,您必须安装cordova-plugin-android-permissions

你必须请求2个权限:READ_EXTERNAL_STORAGECAMERA,并在这2个函数的回调函数中打开相机。

js代码示例:

function takePicture() {
var permissions = cordova.plugins.permissions;
permissions.requestPermission(permissions.READ_EXTERNAL_STORAGE,
function (status) {

if (!status.hasPermission)
error();
else
permissions.requestPermission(permissions.CAMERA, success.bind(this),
error);

function error() {
console.warn('CAMERA permission is not turned on');
}
}
, error);

function error() {
console.warn('READ_EXTERNAL_STORAGE permission is not turned on');
}

function success(status) {
if (!status.hasPermission)
error();
else
openCamera();
}
}

function openCamera() {
navigator.camera.getPicture(onSuccess, onFail, {
quality: 25,
destinationType: Camera.DestinationType.DATA_URL
});

function onSuccess(imageData) {

var src = "data:image/png;base64," + imageData;
console.log(src);
alert('got picture!!!');
}

function onFail(message) {
alert('error ' + message);
}
}

takePicture();

关于android - Cordova Android - 无法打开相机 - READ_EXTERNAL_STORAGE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45509225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com