科尔多瓦 Phonegap 条形码插件无法从我的英特尔 XDK 应用程序启动

Cordova Phonegap Barcode plugin won't launch from my Intel XDK app

本文关键字:我的 英特尔 XDK 启动 应用程序 Phonegap 插件 条形码      更新时间:2023-09-26

我一直在使用英特尔 XDK 构建小应用。我尝试打开Phonegap条形码扫描仪,但是单击启动按钮时没有任何反应。我的目标是扫描二维码并在应用程序浏览器中打开包含结果数据的链接。我安装了设备(cordova-plugin-device(和条形码扫描仪(phonegap-plugin-barcodescanner(插件,并具有相机和闪光灯的权限。

这是我的代码:

<script type="text/javascript">           
    document.addEventListener("deviceready", scanNow, false);
     function scanNow() {
cordova.plugins.barcodeScanner.scan(
  function (result) {
    //  alert("We got a barcode'n" +
     //      "Result: " + result.text + "'n" +
     //       "Format: " + result.format + "'n" +
     //       "Cancelled: " + result.cancelled);
         window.open("http://www.example.com?qr=" + result.text, '_system', 'location=no');

  }, 
  function (error) {
      alert("Error: " + error); 
  });}
</script> 

这是启动按钮:

<a role='button' onclick="scanNow();">Scan</a>

编辑:我通过将这个链接到虚拟脚本添加到我的索引页头来解决问题。

<script src="cordova.js"></script>

您不需要在 deviceready 事件上调用 scanNow() 函数,您只需要确保在触发 deviceready 事件之前不会发生对它的调用。由于您正在调试,我会将该行更改为类似...

document.addEventListener("deviceready", alertDeviceReady, false);

。,然后添加提供警报或控制台消息的alertDeviceReady()。通常需要一两秒钟,但在速度较慢的设备上可能需要更长的时间,或者如果您有一些插件需要较长的初始化时间。

这将是一个安全问题...

window.open("http://www.example.com?qr=" + result.text, '_system', 'location=no');

。由于不应将 Web 视图打开到另一个页面(你正在离开运行应用的内置 Web 视图,因此你与网站无关(。

您可以使用inAppBrowser在 Web 视图顶部打开备用视图,但我建议您使用明确命名的 inAppBrowser API,并且不要假设它已被别名以使用window.open() - 因为他们已经弃用了这种用法,我相信,它在默认安装中不再有别名。也就是说,尝试使用...

cordova.inAppBrowser.open()

。相反。

请参阅此处的文档,其中还将包含有关该插件当前版本的详细信息(可能仅适用于 CLI 5+ 构建(,并包含指向 github 存储库的链接以获取更多信息。