【问题标题】:ionic camera crash android离子相机崩溃android
【发布时间】:2016-12-27 10:19:40
【问题描述】:

我正在开发一个应该打开camera 或从照片库中选择图片的应用程序,问题是如果我测试应用程序build with ionic(所以 android-debug.apk)没有问题但是如果我测试一个signed apk(我用android studio签署了apk)如果我想从照片库中选择一张图片没有问题但是如果我想打开相机应用程序关闭并返回消息“The应用程序“应用程序名称”被中断”。 我只在android上遇到这个问题,在iOS上它工作正常。 我尝试在 google 上搜索,但一无所获,三周前我发布了一个具有相同功能和相同代码的相同应用程序,并且可以正常工作。

这是我打开相机的代码

function capturePhoto() {
      // Take picture using device camera and retrieve image as base64-encoded string
        /*navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
        destinationType: destinationType.DATA_URL }); */


        var srcType = Camera.PictureSourceType.CAMERA;
        var options = setOptions(srcType);
        var func = createNewFileEntry;

        /*if (selection == "camera-thmb") {
            options.targetHeight = 100;
            options.targetWidth = 100;
        }*/

        navigator.camera.getPicture(function cameraSuccess(imageUri) {

            // Do something

        }, function cameraError(error) {
            console.debug("Unable to obtain picture: " + error, "app");

        }, options);

    }

我该如何解决这个问题?

谢谢

【问题讨论】:

  • 输入您的代码或创建小提琴以检查确切的问题。
  • 好的,现在我编辑问题@dkc007
  • 我已经编辑了问题@dkc007

标签: angularjs cordova ionic-framework cordova-plugins


【解决方案1】:

这里总是尝试使用Service。因为你必须在不同的Controllers中使用它,

.factory('imageCapt', function($q, $cordovaCamera) {
    var image_url = "";
    var _ChoosePhoto = function () {
                  var options = {
                    quality: 75,
                    destinationType: Camera.DestinationType.DATA_URL,
                    sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
                    allowEdit: true,
                    encodingType: Camera.EncodingType.JPEG,
                    targetWidth: 300,
                    targetHeight: 300,
                    popoverOptions: CameraPopoverOptions,
                    saveToPhotoAlbum: false
                };
                    return $cordovaCamera.getPicture(options).then(function (imageData) {
                        image_url = "data:image/jpeg;base64," + imageData;
                        return image_url;
                    }, function (err) {
                        alert(err);
                        // An error occured. Show a message to the user
                    });
                }; 
    var _GetImageUrl= function(){
          var options = {
                    quality: 50,
                    destinationType: Camera.DestinationType.DATA_URL,
                    sourceType: Camera.PictureSourceType.CAMERA,
                    allowEdit: true,
                    encodingType: Camera.EncodingType.JPEG,
                    targetWidth: 100,
                    targetHeight: 100,
                    popoverOptions: CameraPopoverOptions,
                    saveToPhotoAlbum: true
                };

                    return $cordovaCamera.getPicture(options).then(function (imageData) {
                        image_url ="data:image/jpeg;base64,"+ imageData;                 
                    return image_url;
                    }, function (err) {
                        alert(err);
                        // An error occured. Show a message to the user
                    });
      // $ionicLoading.show({content: 'Loading', animation: 'fade-in',showBackdrop: true, maxWidth: 200,showDelay: 0});

    };
    return {
        GetImageUrl : _GetImageUrl,
        ChoosePhoto : _ChoosePhoto,
    };

})

注意:如果您不想使用服务,请在控制器中正确使用选项,例如

    var options = {
                quality: 50,
                destinationType: Camera.DestinationType.DATA_URL,
                sourceType: Camera.PictureSourceType.CAMERA,
                allowEdit: true,
                encodingType: Camera.EncodingType.JPEG,
                targetWidth: 100,
                targetHeight: 100,
                popoverOptions: CameraPopoverOptions,
                saveToPhotoAlbum: true
            };

【讨论】:

  • 我在运行 android-debug.apk 时在控制台中没有出错,但是当我运行签名的 apk 时应用程序崩溃并且使用签名的 apk 我没有使用 chrome 控制台跨度>
  • 如果您使用 Android 6,您应该在访问相机之前征求用户许可
猜你喜欢
  • 2016-03-20
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多