19

我开始了cordova Android编程2个月前。一切都很好,主要是现在不工作的相机。但上周一些如何我的项目目录被删除,我重新安装cordova的所有插件和complied项目,但现在它显示错误“非法参数异常”在相机单击令人惊讶的事情是我没有改变单行代码,它也正常工作在其他开发者机器上。科尔多瓦Android相机 - 提供非法参数异常

cordova插件添加cordova-plugin-camera 从相机插件安装中使用的命令。

camera_app.js文件

var pictureSource; // picture source 
var destinationType; // sets the format of returned value 


// Wait for device API libraries to load 
// 
document.addEventListener("deviceready", onDeviceReady, false); 

// device APIs are available 
// 
function onDeviceReady() { 
    pictureSource = navigator.camera.PictureSourceType; 
    destinationType = navigator.camera.DestinationType; 

} 


// Called when a photo is successfully retrieved 
// 
function onPhotoURISuccess(imageURI) { 
    // largeImage.src = imageURI; 
    console.log(imageURI); 
    console.log(document_type); 


} 

function getPhoto(docType) { 
    // Retrieve image file location from specified source 
    document_type = docType 
    $('.docError').hide(); 
    navigator.camera.getPicture(onPhotoURISuccess, onFail, { 
     quality: 50, 
     destinationType: destinationType.FILE_URI 
    }); 
} 


$('#file1').click(function() { 
    console.log('On camera click'); 
    getPhoto("addressProof"); 
}); 

我试图调试代码终于发现这是由于供应商路径 - java.lang.IllegalArgumentException异常:缺少android.support.FILE_PROVIDER_PATHS元数据

但是我已经在Android xml文件中添加了提供程序路径元数据,因为在添加cordova插件时它会自动添加。

<provider android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true" android:name="android.support.v4.content.FileProvider"> 
      <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" /> 
     </provider> 

科尔多瓦插件 -

科尔多瓦 - 插件,应用程序版本0.1.9 “AppVersion” 科尔多瓦 - 插件相机2.4.1 “相机” 科尔多瓦 - 插件 - COMPAT 1.1.0“COMPAT “ 科尔多瓦-插件白名单1.3.2 ”白名单“ 科尔多瓦-源码存储1.4.9 ”科尔多瓦源码存储插件“ 离子-插件键盘2.2.1 ”键盘“

科尔多瓦与平台

安装平台: 机器人6.2.3 可用平台: blackberry10〜3.8.0(废弃) 浏览器〜4.1.0 的webos〜3.7.0 窗口〜5.0.0

NPM版本 - { npm:'3.10.3', ares:'1.10.1-DEV', http_parser:'2.7.0', icu:'57 .1', modules:'48', node:'6.4.0' , openssl:'1.0.2h', uv:'1.9.1', v8:'5.0.71.60', zlib:'1.2.8'}

+0

您是否试过删除并重新添加thr android平台?这肯定不能是插件的问题,因为我没有看到任何与他们的官方bug跟踪器相关的问题。更多的环境问题 – Gandhi

+0

cordova-android版本? cordova CLI版本? – jcesarmobile

+0

@jcesarmobile cordova version 7.0.1 – Mahesh

回答

8

这是非常简单和基本。只需将您的文件提供商添加到您的科尔多瓦启动器活动。在我的情况下,我有一些自定义活动,错误的提供者被添加到所有活动的底部,我的猜测是cordova无法读取该提供者,这就是为什么它给 java.lang.IllegalArgumentException:缺少android.support.FILE_PROVIDER_PATHS meta-data

+0

但是你已经提到你自从工作副本以来没有在项目中做过任何代码更改。那么自定义活动来自哪里?你也提到Android清单文件是合适的 – Gandhi

+0

@Gandhi作为Android开发人员,我认为一旦在清单代码中声明提供程序并从任何地方读取它,但不是在cordova中不是这样。你可以尝试你的项目,看看会发生什么。 – Mahesh

+0

在android build上自动生成清单文件。所以永远不会调整测试任何东西。你可能已经提前发布了androidmanifest文件 – Gandhi

0

今天我有类似的问题。试了一切(重新安装插件,从源重新安装插件,重新安装旧版本的插件),但似乎没有任何帮助。 不知道为什么,但 后 - 杀死模拟器 - >科尔多瓦清洁机器人 - >科尔多瓦平台Android的删除 - >科尔多瓦平台添加的Android - >科尔多瓦构建Android - 连接我的设备 - >科尔多瓦运行的Android 它再次像以前一样工作:-) 我仍然不知道为什么。 尝试一下你自己的风险。也许它有帮助。