我在网页浏览中显示内容。内容从服务器API加载。内容可以包含以下链接:
<a href="#register">Register</a>
如何点击 #register 。
我可以使用一些HTML解析器并附加onClick事件,但更好更容易将URL更改为 #register 。
非常感谢任何建议。
修改
我尝试了以下示例,但没有运气
browser = (WebView) view.findViewById(R.id.intro_browser);
// Set Chrome instead of the standard WebView
browser.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
Logger.d("TEST");
return true;
}
@Override
public void onLoadResource(WebView view, String url) {
Logger.d("URL IS:");
Logger.d(url);
if (url.startsWith("app://")) {
}
}
});
browser.getSettings().setJavaScriptEnabled(true);
browser.addJavascriptInterface(new WebViewJavaScriptInterface(getContext()),
Constants.Welcome.JAVASCRIPT_NAMESPACE);
//browser.getSettings().setAllowFileAccessFromFileURLs(true);
//browser.getSettings().setAllowUniversalAccessFromFileURLs(true);
browser.loadData(htmlContent, Constants.Welcome.MIME_TYPE, Constants.Welcome.ENCODING);
答案 0 :(得分:0)
您需要创建自定义WebViewClient:
public class CustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
boolean result = false;
if (Objects.equal(url, "#register")) {
result = true;
//Do what you want here
}
return result;
}
}
然后你需要把它交给WebView:
webView.setWebViewClient(new CustomWebViewClient());
在true
中返回shouldOverrideUrlLoading
表示您在返回false
时处理了Url,这意味着WebView应该处理它。
答案 1 :(得分:0)
在清单中添加一个intent过滤器,以便以&#34; yourapp://&#34;开头的链接或类似的东西将启动您的应用程序。
如果您要生成网络内容,请为您的应用生成链接。
<a href="yourapp://register">Register</a>
如果您没有生成内容,请使用webview.load(&#34; javascript://代码将注册链接替换为yourapp://&#34;)。