在Android活动中,我正在显示网页视图。
WebView myWebView = (WebView) findViewById(R.id.webView1);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("file:///android_asset/html/cloud.html");
webview加载一个本地HTML文件,该文件使用javascript文件构建关键字云。 (来源:http://www.goat1000.com/tagcanvas.php)
<script src="tagcanvas.js" type="text/javascript"></script>
<script type="text/javascript">
window.onload = function() {
try {
TagCanvas.Start('myCanvas','tags',{depth: 0.8, maxSpeed: 0.03});
} catch(e) {
// something went wrong, hide the canvas container
document.getElementById('myCanvasContainer').style.display = 'none';
}
关键字是从HTML文件
中定义的HTML链接列表生成的<div id="tags">
<ul>
<li><a href="/location1">keyword1</a></li>
<li><a href="/location2">keyword2</a></li>
<li><a href="/location3">keyword3</a></li>
</ul>
</div>
当用户点击链接时,我希望他开始新的Android活动,而不是留在网页浏览中并转到相应的位置,所以很明显使用Android代码
我发现资源显示了如何使Android和Javascript与界面“通信”的示例,但我没有设法让它在我的情况下工作。
编辑: 我的实现得益于Vlad的回答
myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(Act1.this, Act2.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //ugly solution to avoid starting 2 activities, not ideal but it works
startActivity(intent);
return true; //I always return true because I never want to open an HTML link
}
});
答案 0 :(得分:2)
您可以将自定义WebViewClient
设置为WebView
,并将url
加载到其中:
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// check the URL, and do whatever you need to do according to the URL
// return true; // if you handled URL, and WebView should not load it
return false; // for the WebView to load the URL
}
});