我有一个HTML文件,如果我在Android原生浏览器中打开它,它会启动一个应用程序,
但是当我尝试在WebView中打开相同的文件时,它无法启动该应用程序,并显示“网页不可用”。 我认为我的WebView无法处理应用程序定义的“my.special.scheme://”方案。
我阅读了从浏览器启动Android应用程序,但它没有涵盖有关从WebView启动应用程序的信息。
确实,带有自定义URI方案的链接不会自动加载WebView中的应用程序。
您需要做的是在WebView中添加一个自定义WebViewClient:
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;
}
true
,否则返回false
。我使用URL执行ACTION_VIEW
,以便在默认浏览器中打开URL,浏览器将重定向到相关应用程序(我需要通过银行应用修复有关付款的问题)