我有一个HTML文件,如果我在Android原生浏览器中打开它,它会启动一个应用程序, 但是当我尝试在WebView中打开它时,它无法启动该应用程序,并显示“网页不可用”。我认为我的WebView无法处理为应用程序定义的方案“my.special.scheme://”。
我阅读Launching an Android Application from the Browser,但不包含有关从WebView启动应用的信息。
答案 0 :(得分:6)
确实,自定义URI方案的链接不会自动加载从WebView启动应用程序。
您需要做的是将自定义WebViewClient添加到WebView:
webView.setWebViewClient(new CustomWebViewClient());
然后在shouldOverrideUrlLoading()中,有以下代码:
public boolean shouldOverrideUrlLoading(final WebView webView, final String url) {
if (url.startsWith("my.special.scheme://")) {
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
// The following flags launch the app outside the current app
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
activity.startActivity(intent);
return true;
}
return false;
}
答案 1 :(得分:4)
我不确定,但我相信WebView根本不处理自定义URI方案。
解决方法是覆盖WebViewClient.shouldOverrideUrlLoading()并手动测试网址是否使用您的URI方案,启动您的应用并返回true
(如果匹配),否则返回false
。
答案 2 :(得分:0)
我使用网址执行ACTION_VIEW
,以在默认浏览器中打开该网址,该浏览器将重定向到相关应用程序(我必须通过银行应用程序解决有关付款的问题)