
新建android工程,添加网络权限
MainActivity.java
-
package com.vibexie.mywebview;
-
-
import android.app.Activity;
-
import android.support.v7.app.ActionBarActivity;
-
import android.os.Bundle;
-
import android.view.KeyEvent;
-
import android.view.Menu;
-
import android.view.MenuItem;
-
import android.view.View;
-
import android.view.Window;
-
import android.webkit.JavascriptInterface;
-
import android.webkit.JsResult;
-
import android.webkit.WebChromeClient;
-
import android.webkit.WebSettings;
-
import android.webkit.WebView;
-
import android.webkit.WebViewClient;
-
import android.widget.Button;
-
import android.widget.Toast;
-
-
-
public class MainActivity extends Activity{
-
private WebView webview;
-
private Button button;
-
private Button button2;
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
-
setContentView(R.layout.activity_main);
-
webview=(WebView)this.findViewById(R.id.webview);
-
button=(Button)this.findViewById(R.id.button);
-
button2=(Button)this.findViewById(R.id.button2);
-
/**
-
* 支持javascript,getSettings()返回一个WebSettings对象
-
*/
-
webview.getSettings().setJavaScriptEnabled(true);
-
-
// /**
-
// * 类似浏览器客户端,可以点击链接进行网页的浏览
-
// * WebViewClient对象无法执行javascript,需要使用WebChromeClient()执行javascript
-
// */
-
// webview.setWebViewClient(new WebViewClient() {
-
// /**
-
// * 监听接收网页错误
-
// * @param view
-
// * @param errorCode
-
// * @param description
-
// * @param failingUrl
-
// */
-
// @Override
-
// public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
-
// Toast.makeText(MainActivity.this, "Oh no! " + description, Toast.LENGTH_SHORT).show();
-
// super.onReceivedError(view, errorCode, description, failingUrl);
-
// }
-
// /**
-
// * 监听点击链接事件,当点击链接时刷新界面
-
// * @param view
-
// * @param url
-
// * @return
-
// */
-
// @Override
-
// public boolean shouldOverrideUrlLoading(WebView view, String url) {
-
// view.loadUrl(url);
-
// return true;
-
// }
-
// });
-
-
/**
-
* 浏览器客户端的第二种方式
-
* 要注意的是,WebChromeClient对新默认监听点击链接事件,当点击链接时刷新界面
-
*/
-
webview.setWebChromeClient(new WebChromeClient(){
-
/**
-
* 一旦发现js有alert即执行js alert窗口
-
* @param view
-
* @param url
-
* @param message
-
* @param result
-
* @return 如果放回true,客户端需要在return之前自行写效果如alertDialog.builder提示,返回false则执行默认js效果
-
*/
-
@Override
-
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
-
return super.onJsAlert(view, url, message, result);
-
}
-
-
});
-
-
/**
-
*测试客户端添加javascript
-
*/
-
button2.setOnClickListener(new View.OnClickListener() {
-
@Override
-
public void onClick(View v) {
-
class JsObject {
-
@JavascriptInterface
-
public String toString() { return "vibexie"; }
-
}
-
/**
-
* 注意这里添加的一个injectedObject javascript对象可以被服务器端的js直接访问
-
*/
-
webview.addJavascriptInterface(new JsObject(), "injectedObject");
-
webview.loadData("", "text/html", null);
-
webview.loadUrl("javascript:alert(injectedObject.toString())");
-
}
-
});
-
-
/**
-
* 加在页面
-
*/
-
webview.loadUrl("");
-
-
/**
-
* 刷新按钮
-
*/
-
button.setOnClickListener(new View.OnClickListener() {
-
@Override
-
public void onClick(View v) {
-
webview.loadUrl("");
-
}
-
});
-
}
-
-
-
/**
-
* 监听点击事件
-
* @param keyCode
-
* @param event
-
* @return
-
*/
-
@Override
-
public boolean onKeyDown(int keyCode, KeyEvent event) {
-
/**
-
* 回退上一页,若无上页则退出
-
*/
-
if(keyCode==KeyEvent.KEYCODE_BACK && webview.canGoBack()){
-
webview.goBack();
-
return true;
-
}
-
return super.onKeyDown(keyCode, event);
-
}
- }
index.html
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<meta charset="UTF-8">
-
<title>Insert title here</title>
-
<script type="text/javascript">
-
function myAlert(){
-
alert(document.loginForm.username.value);
-
}
-
</script>
-
</head>
-
<body>
-
<div align="center">
-
<form action="loginForm" method="post" name="loginForm">
-
<table border="1" bordercolor="#000000" cellspacing="0">
-
<tr>
-
<th>用户名</th>
-
<td><input type="text" name="username"/></td>
-
</tr>
-
<tr>
-
<th>密码</th>
-
<td><input type="password" name="password"/></td>
-
</tr>
-
<tr>
-
<td colspan="2" align="center">
-
<input type="submit" name="submit" value="提交"/>
-
</td>
-
</tr>
-
</table>
-
<button onclick="myAlert()">显示用户名</button>
-
</form>
-
</div>
-
</body>
- </html>