我想创建一个渐进式 Web 应用程序,并且在该应用程序的某些流程中,我希望 native Android 应用程序
能够运行,因为需要一些硬件访问(USB 设备)。
所以我只希望网络应用程序能够使用一些参数重定向到android native 应用程序
。 Android应用程序功能结束后,捕获的数据将再次发送回Web,并控制应用程序流程。
如何实现这一目标?
我使用的是
原生 SDK
,因此无法将其放入网络应用中。如果用户之前没有安装过
原生应用
,会如何处理?是否必须在用户的手机上安装native 应用
?Android 应用程序代码可以通过 Web 应用程序运行吗(无需在用户的手机中安装 native 应用程序)?如果可能的话,这会是一个很棒的解决方案吗?
最佳答案
取决于您尝试访问的 USB 硬件及其支持 WebUSB API - 针对操作系统/浏览器,你可能能也可能不能直接在JS中实现。您需要列出您的具体硬件、需要通过 USB、浏览器和操作系统访问的内容,以便有人可以判断您是否可以使用 WebAPI 来实现。这是Chrome's documentation for WebAPI 。
您只需访问此网站 - what web can do today with HTML 5 APIs ,在“环境”部分下,如果 USB 为绿色勾号,则该设备浏览器支持 USB。您可能会注意到某些浏览器/平台组合显示绿色和一些红色十字(不支持)。
如果您断定 WebUSB API 不支持您尝试访问的 USB 硬件,那么唯一的方法就是使用 native 代码作为 PWA 和硬件之间的层。 Here is an example PWA 和 native Android 应用程序通过 WebSockets 进行通信的解决方案。可以通过 Web 缩进与 URL 中的参数进行通信。但你能做的事情是有限的。当您需要的不仅仅是简单的参数时,WebSockets 可能是更好的选择。在链接的 githug 代码中,您可以删除条形码扫描逻辑并替换为 USB 功能或任何其他硬件/ native API 访问。如果您可以确保用户安装 native 应用程序或在未安装时提示安装,Websockets 解决方案 + 安装 native 应用程序是很好的选择。如果您想支持在浏览器中运行的网络应用程序以及已安装的应用程序(使用添加到主屏幕),这将是更好的选择
您不能将此 native 解决方案放入 Web 应用程序中,除非您想将其包装在 Cordova 类型的混合解决方案中,否则您可能会在 Webview 版本 <40 的旧设备中失去 PWA Service Worker 的优势。如果您想通过应用程序商店将 PWA 应用程序打包发送,并且不可能/首选发送两个应用程序( native + Web),那么这将是一个不错的选择。
关于java - 如何通过移动网络浏览器运行Android应用程序(渐进式应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49759920/