我需要使用Phonegap应用程序捕获图像。在iOS上一切正常,但在Android上(通过Phonegap Build),它会引发一个错误"错误捕获图像"。
我在config.xml中添加了以下行,但这并没有改变任何内容:
<feature name="Camera">
<param name="android-package" value="org.apache.cordova.camera.CameraLauncher" />
</feature>
<feature name="http://api.phonegap.com/1.0/device" />
<feature name="http://api.phonegap.com/1.0/camera" />
<feature name="http://api.phonegap.com/1.0/file" />
<feature name="http://api.phonegap.com/1.0/media" />
<feature name="http://api.phonegap.com/1.0/network" />
我的API调用如下:
$(document).on('click', '#cameraPreview', function() {
pictureSource = navigator.camera.PictureSourceType;
destinationType = navigator.camera.DestinationType;
navigator.camera.getPicture(onGetPictureSuccess, onGetPictureFail, {
quality: 40,
sourceType: Camera.PictureSourceType.CAMERA,
destinationType: Camera.DestinationType.FILE_URI,
allowEdit: true,
encodingType: Camera.EncodingType.JPG,
targetWidth: 1000,
targetHeight: 1000,
saveToPhotoAlbum: true,
correctOrientation: 1
});
});
我使用Phonegap 3.7和Phonegap Build。
答案 0 :(得分:18)
好的,现在我知道了答案。问题是saveToPhotoAlbum: true
选项。 Android并没有意识到这一点。当我删除此选项时一切正常。
答案 1 :(得分:1)
将cordova-camera-plugin
更新到4.0.2或更高版本应该可以解决保存到相册的问题。
从Android 8开始,将照片保存在相册中需要具有WRITE_EXTERNAL_STORAGE
权限,但是版本低于4.0.2的cordova-camera-plugin
版本不需要此权限。
有关更多信息:
答案 2 :(得分:0)
对我来说,我必须添加此权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 3 :(得分:0)
检查您的cordova-camera-plugin版本。 如果低于4.0.1,将通过更新最新版本来解决。 否则,我不知道。
这是一个已知问题,已经得到解决。 您可以在下面的链接中查看更多详细信息。 https://issues.apache.org/jira/browse/CB-13781
答案 4 :(得分:0)
在不同版本的Android和不同的SDK版本中,权限要求已更改。确保您为目标操作系统版本使用了合适的插件版本。
对于在Android 10上看到cordova-camera-plugin <= 4.2.0遇到相同问题的任何人,您可以设置<preference name="android-targetSdkVersion" value="28" />
有关更多信息,请参见此票证:https://github.com/apache/cordova-plugin-camera/issues/611