WebView起步1
- 权限加入
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
- 设置WebView可用
WebView webview = (WebView)findViewById(R.id.vew);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://www.baidu.com");
- 如果点击VebView中,希望继续在当前浏览器中相应,而不是在新的浏览器中相应,则必须加入如下代码
webview.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
- 如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
webview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
- 实例,和js交互
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
<script>
function wave(){
document.getElementById(‘button‘).value = ‘aaaaaaa‘;
}
</script>
</head>
<body>
<input type="button" id="button" value="点我试试看" onClick="alert(1);window.demo.clickOnAndroid()" />
</body>
</html>
WebView webview;
private Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview = (WebView)findViewById(R.id.vew);
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
webview.addJavascriptInterface(new androidclick() , "demo");
webview.loadUrl("file:///android_asset/demo.html");
}
private final class androidclick{
public void clickOnAndroid(){
mHandler.post(new Runnable() {
public void run() {
webview.loadUrl("javascript:wave()");
}
});
}
}
- 为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。