相机在 Monaca Debugger 中工作,但在 Debug Build 中不工作
Camera works in Monaca Debugger but not in Debug Build
因此,我正在开发一款新应用,该应用使用摄像头在 Android 上进行实时视频 OCR。无论如何,该应用程序在 Monaca 调试器中运行良好。当我随后进行调试或发布构建时,相机将无法工作。
在初始加载时,应用程序提示允许摄像头,但即使在点击允许后,权限响应也被永久拒绝。我已经尝试了 Android 权限插件、诊断插件和自定义配置插件,但都无法解决这个问题,或者我没有正确使用它们。
当应用程序在调试器中使用时,系统提示我需要 2 个权限,都与相机或存储有关,但在调试版本中,我只获得了相机权限。这是初步检查:
ons.ready(function(){
cordova.plugins.diagnostic.isCameraPresent(function(present){
console.log("Camera is: "+present)
if(present) {
cordova.plugins.diagnostic.isCameraAuthorized({
successCallback: function(authorized){
if (authorized){
showToast("App is authorized access to the camera","green");
} else {
setPermissions();
}
},
errorCallback: function(error){
console.error("The following error occurred: "+error);
},
externalStorage: true
});
} else
document.getElementById('msg').innerHTML='Camera is not present.';
}, function(error){
console.log('The following error occurred: '+error);
});
});
function setPermissions(){
cordova.plugins.diagnostic.requestCameraAuthorization({
successCallback: function(status){
showToast("Authorization request for camera use was " + (status == cordova.plugins.diagnostic.permissionStatus.GRANTED ? "granted":"denied"),(status == cordova.plugins.diagnostic.permissionStatus.GRANTED ? "green":"red"));
},
errorCallback: function(error){
console.error(error);
},
externalStorage: true
});
}
我使用 Cordova-Custom-Config 插件解决了这个问题。我过去曾尝试过,但我猜没有仔细阅读文档。您需要以下内容:
<widget xmlns:android="http://schemas.android.com/apk/res/android">
<platform name="android">
<custom-config-file target="AndroidManifest.xml" parent="/*">
<uses-permission android:name="android.permission.CAMERA" />
</custom-config-file>
</platform>
这解决了发布版本中的权限问题。
因此,我正在开发一款新应用,该应用使用摄像头在 Android 上进行实时视频 OCR。无论如何,该应用程序在 Monaca 调试器中运行良好。当我随后进行调试或发布构建时,相机将无法工作。
在初始加载时,应用程序提示允许摄像头,但即使在点击允许后,权限响应也被永久拒绝。我已经尝试了 Android 权限插件、诊断插件和自定义配置插件,但都无法解决这个问题,或者我没有正确使用它们。
当应用程序在调试器中使用时,系统提示我需要 2 个权限,都与相机或存储有关,但在调试版本中,我只获得了相机权限。这是初步检查:
ons.ready(function(){
cordova.plugins.diagnostic.isCameraPresent(function(present){
console.log("Camera is: "+present)
if(present) {
cordova.plugins.diagnostic.isCameraAuthorized({
successCallback: function(authorized){
if (authorized){
showToast("App is authorized access to the camera","green");
} else {
setPermissions();
}
},
errorCallback: function(error){
console.error("The following error occurred: "+error);
},
externalStorage: true
});
} else
document.getElementById('msg').innerHTML='Camera is not present.';
}, function(error){
console.log('The following error occurred: '+error);
});
});
function setPermissions(){
cordova.plugins.diagnostic.requestCameraAuthorization({
successCallback: function(status){
showToast("Authorization request for camera use was " + (status == cordova.plugins.diagnostic.permissionStatus.GRANTED ? "granted":"denied"),(status == cordova.plugins.diagnostic.permissionStatus.GRANTED ? "green":"red"));
},
errorCallback: function(error){
console.error(error);
},
externalStorage: true
});
}
我使用 Cordova-Custom-Config 插件解决了这个问题。我过去曾尝试过,但我猜没有仔细阅读文档。您需要以下内容:
<widget xmlns:android="http://schemas.android.com/apk/res/android">
<platform name="android">
<custom-config-file target="AndroidManifest.xml" parent="/*">
<uses-permission android:name="android.permission.CAMERA" />
</custom-config-file>
</platform>
这解决了发布版本中的权限问题。