[在我的Android应用上,我使用WebView展示购买流程。在最后一步中,询问付款方式,如果安装了两个选项,则将触发新应用的启动。我们用例中最突出的示例是MobilePay。
[当流程使用的是经典浏览器(例如Chrome)时,该页面实际上会打开付款提供商应用。当我通过WebView进行操作时,不会发生。
我知道这个问题与其他许多问题类似,例如this和this,但是他们的解决方案是拦截该链接,然后在Chrome或标准浏览器中将其打开。这不适用于我的情况,因为我需要能够在付款提供商的应用程序完成其过程后返回到该应用程序,以显示确认屏幕。
如何让浏览器具有与WebView中的chrome相同的行为,并在需要时让它打开应用程序?
我已经尝试了许多webview设置,例如:
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAllowContentAccess(true);
webView.getSettings().setAllowFileAccessFromFileURLs(true);
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setSupportMultipleWindows(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
您可以尝试以下吗?
覆盖WebViewClient.shouldOverrideUrlLoading()并手动测试URL是否使用您的URI方案,启动您的应用程序,如果匹配则返回true,否则返回false。