如何在使用Cordova模拟

时间:2018-01-04 17:35:11

标签: cordova visual-studio-2017 cordova-plugins tools-for-apache-cordova

我试图遵循Cordova Camera Plugin的Take a picture and get a FileEntry Object示例。我正在使用Cordova Simulate Visual Studio 2017通过选择"模拟浏览器"

来测试示例

拍摄照片并在模拟器中显示图像,使用与此代码段中传递给Cordova Files插件相同的imageUrl

function cameraSuccess(imageUri) {
  window.resolveLocalFileSystemURL(imageUri, function () {
    console.log('success')
  }, function (error) {
    console.log(error.message);
  });

  return imageUri;
}

但是,对resolveLocalFileSystemURL的调用失败,并显示以下错误:

  

提供给API的URI格式不正确,或者生成的数据URL格式错误   超出了数据网址的网址长度限制。

我需要做些什么来实现这个目标?

修改 我在插件文档的Chrome Quirks部分找到了这条说明

  

resolveLocalFileSystemURL方法需要入站网址   文件系统前缀。例如,url参数为   resolveLocalFileSystemURL应该在表单中   filesystem:file:///persistent/somefile.txt而不是表单   Android中的文件:///persistent/somefile.txt。

所以我将代码更改为:

  if (device.isVirtual) {
    if (!window.isFilePluginReadyRaised) {
      //added to check another potential Chrome quirk
      //the alert wasn't never shown so I don't think it's an issue
      alert('!window.isFilePluginReadyRaised');
    }

    imageUri= 'filesystem:' + imageUri;
  }

window.resolveLocalFileSystemURL(imageUri, function () {
  console.log('success');
}, function (error) {
  console.log(error.message);
});

现在错误信息是:

  

确定某些文件对于Web应用程序内的访问不安全,或者正在对文件进行过多调用   资源。

另一个Chrome怪癖是:

  

Chrome需要--allow-file-access-from-files运行参数才能支持   API通过file:/// protocol。

目前尚不清楚Cordova Simulate是否会使用此参数启动Chrome。之前已经提出过这个问题:

Cordova: Launching chrome with --allow-file-access-from-files from VS 2017

Can't use cordova-plugin-file in Chrome : SecurityError when calling window.resolveLocalFileSystemURL

因此,或许解决方案是将Cordova Simulate转换为"允许文件访问文件" ?我该如何检验这个假设?

修改 测试假设的一种方法是按照this answer下的注释中的建议从命令行运行模拟器。启动模拟器后,您可以通过在地址栏中键入chrome://version/来运行命令。我添加了标记--allow-file-access-from-files--unlimited-quota-for-files,但出现了相同的安全错误

0 个答案:

没有答案