如何从Chrome内部触发的Intent将结果返回到您的网页?

时间:2015-10-18 07:44:01

标签: android google-chrome android-intent progressive-web-apps

所以我很高兴发现chrome mobile可以调用intent

但是,我可以得到结果吗?

我有一个输入供用户输入项目的条形码。

如果他们使用chrome mobile,我想调用条形码扫描器应用程序,并将扫描的条形码接收回输入字段。

无法在谷歌上找到任何相关信息。

即使是文档或示例的简单链接也会有很大帮助。

谢谢。

1 个答案:

答案 0 :(得分:3)

Chrome无法使用startActivityForResult启动活动,因此没有简单的方法可以让接收应用程序直接回调到网站或网络应用程序,并带有您原本期望的响应。

虽然有一个解决方案,但它要求本机应用程序同意该协议。

使用名为ret

的简单查询字符串参数,ZXing QR Code Scanner支持使用QR代码扫描结果对网站进行回调
  

在Android上,您可以从网页调用条形码扫描程序,并通过回调网址将结果返回到您的网站。例如,当扫描01234时,要让用户返回http://foo.com/products/01234/description,只需链接到这样的URL,其中{CODE}是占位符,表示返回代码的值:

     

http://zxing.appspot.com/scan?ret=http%3A%2F%2Ffoo.com%2Fproducts%2F%7BCODE%7D%2Fdescription&SCAN_FORMATS=UPC_A,EAN_13

     

请注意,ret =参数中的URL是URL转义的,{CODE}用作扫描值的占位符(上图中,它显示为%7BCODE%7D)。此处也可以设置SCAN_FORMATS和其他参数来控制扫描行为。例如,可用于提供以逗号分隔的格式名称列表。

您可以在原生应用和网络应用中设置类似的方案,以便在本机应用中完成操作并使用名为ret的查询字符串参数(或任何您想要的)启动时它知道需要使用Intent中设置的回调URL和查询字符串中添加的额外数据来启动新的Activity,这样您的浏览器就会打开它所需的所有数据。

但确实存在许多问题:

  • 您无法定位窗口,因此可能会打开一个新窗口,然后您的网络应用会打开两次
  • 您需要Web应用程序和本机应用程序来支持如何返回数据的合同。