Cordova 相机插件上的错误

Posted

技术标签:

【中文标题】Cordova 相机插件上的错误【英文标题】:Bug on Cordova camera plugin 【发布时间】:2016-10-24 05:04:04 【问题描述】:

我有下面带有cordova-camera-plugin的代码来浏览移动设备上的文件,当我在设备上运行时它只工作一次。下次尝试时,当我选择一个文件时,对话框不会隐藏。

请帮我看看我的代码出了什么问题。

html

<div data-page="do-job" class="page navbar-fixed">
  <div class="navbar">
    <div class="navbar-inner">
      <div class="left"><a href="index-content.html" class="link icon-only"><i class="icon icon-back"></i></a></div>
      <div class="center"><a href="index-content.html" class="link">Kerjakan Tugas</a></div>
    </div>
  </div>  
    <div id="camerass">
    <div class="page-content">
    <form action="#" id="form">
    <input type="hidden" name="attachment" id="post_image" value="">
    <input type="hidden" name="job_id" id="job_id" value="">
    <div class="list-block inputs-list">
      <ul>  
        <li class="align-top">
          <div class="item-content">
            <div class="item-inner"> 
              <div class="item-title label">Desc</div>
              <div class="item-input">
                <textarea class="resizable isi" name="isi" id="isi" rows="4"  class='required'></textarea>
              </div>
            </div>
          </div>
        </li>
      </ul>
    <div class="image-list">
      <div class="file-chooser">                
        <i class="fagambar2 fa fa-image"></i>
        <i class="fagambar fa fa-plus"></i>
      </div>
    </div>  
    </div>
      <div class="content-block"><a href="#" class="button button-fill kirim_pekerjaan">Send Job</a></div>
    </form>    
  </div>
  </div>

Java 脚本:

  $(document).on('click','.file-chooser', function (e)
  
    var ini=$(this);
    ini.attr('disabled',true);
    var html='';
    var opt=
      sourceType:0|2,
      mediaType: Camera.MediaType.ALLMEDIA
    ;
    navigator.camera.getPicture(function(imageData)
      console.log(imageData);
      if(isImage(imageData))
      
        html+='<div class="image-added"  data-src="'+imageData+'" ><img src="'+imageData+'" class="image-kirim-thumbnail"/></div>';
      else
      
        html+='<div class="image-added" data-src="'+imageData+'"><i class="fa fa-video-camera"></i> </div>';
      
        $('.image-list').prepend(html);
        var win = function (r) 
          console.log("Code = ");
          console.log(r);
          var resp=JSON.parse(r.response);

          if(resp.STATUS=='SUCCESS')
           
            dataUpload.push(resp.DESCRIPTION);
            $('#post_image').val(dataUpload.toString());
          
          ini.removeAttr('disabled');
        
        var fail = function (error) 
          console.log('error');
          console.log(error);
        
        var options = new FileUploadOptions();
        options.fileKey = "file";
        options.fileName = 'file_image.jpg';
        options.httpMethod="POST";
        if(getFileType(imageData)=='image')
                  
          options.mimeType = 'image/jpeg';
        else
        
          options.mimeType = 'video/mp4';
        

        var params = ;
        params.value1 = "test";
        params.value2 = "param";

        options.params = params;
        var ft = new FileTransfer();
        var path_url=APIPath+'upload_file/uploadFile/'+window.localStorage.getItem('token_id');
        ft.upload(imageData, encodeURI(path_url), win, fail, options);  
    , function(msg)
      console.log("Error");
      console.log(msg);
    ,opt);
 
  );

【问题讨论】:

我找到了我的问题的答案,问题是,元素监听的点击事件不止一次。所以我添加了一个名为 cameraMode 的变量。当 if(kameraMode===true) kamera.getPicture(function(imageData) kameraMode=false; ...................... .. 【参考方案1】:

我找到了问题的答案,

问题是,元素监听不止一次点击事件。所以我添加了一个名为 cameraMode 的变量。当

if(kameraMode===true)


  kamera.getPicture(function(imageData)
  kameraMode=false;

..................

【讨论】:

以上是关于Cordova 相机插件上的错误的主要内容,如果未能解决你的问题,请参考以下文章

Cordova 和 proguard:takePicture 上的相机插件 NPE

Cordova 构建错误:相机插件缺少 android.support.v4 库依赖项

Cordova 应用程序在尝试访问相机时崩溃

Cordova 相机插件 IOS 11 无法从库中选择图像

Cordova 插件:无法检索图片的路径

使用 Phonegap/Cordova 相机插件从相机或图库中选择照片