Ionic Camera crash android

я разрабатываю приложение, которое должно открыть cameraили выбрать изображение из библиотеки фотографий, проблема в том, что если я тестирую приложение build with ionic(так android-debug.apk) нет проблем, но если я тестирую signed apk(я подписал apk с android studio) если я хочу выбрать изображение из библиотеки фотографий нет проблем, но если я хочу, чтобы открыть камеру приложение закрывается и возвращает messagge «приложение «имя приложения» был прерван».
I’ve this problem only on android, on iOS it works fine.
Я пытался искать в 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);

    }

Как решить эту проблему?

Благодарения

1 ответ

  1. Всегда старайтесь пользоваться сервисом здесь .Потому что вы должны использовать его в различных контроллерах,

    .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
                };