/** * ___====-_ _-====___ * _--^^^#####// \\#####^^^--_ * _-^##########// ( ) \\##########^-_ * -############// |\^^/| \\############- * _/############// (@::@) \\############\_ * /#############(( \\// ))#############\ * -###############\\ (oo) //###############- * -#################\\ / VV \ //#################- * -###################\\/ \//###################- * _#/|##########/\######( /\ )######/\##########|\#_ * |/ |#/\#/\#/\/ \#/\##\ | | /##/\#/ \/\#/\#/\#| \| * ` |/ V V ` V \#\| | | |/#/ V ' V V \| ' * ` ` ` ` / | | | | \ ' ' ' ' * ( | | | | ) * __\ | | | | /__ * (vvv(VVV)(VVV)vvv) * 神兽保佑 * 代码无BUG! */
public class MainActivity extends Activity {
private TextView tvTitle;private ProgressBar bar;
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webview);
tvTitle = (TextView) findViewById(R.id.tvTitle);
bar = (ProgressBar) findViewById(R.id.bar);
// webView.loadUrl("http://172.17.70.50:8080/index.html");
// 加载一个本地网页 file:///android_asset 固定写法
webView.loadUrl("file:///android_asset/index.html");
// 设置WebView是否支持Js与android之间进行交互
webView.getSettings().setJavaScriptEnabled(true);
// this 相当于你的学名 test 相当于你的小名
webView.addJavascriptInterface(MainActivity.this, "test");
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
tvTitle.setText(title);
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
bar.setProgress(newProgress);
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
bar.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
bar.setVisibility(View.GONE);
}
});
}
public void btnAndroidCallJs(View v) {
// android 调用js 里面的代码
webView.loadUrl("javascript:androidCallJs('fuck!')");
}
// @JavascriptInterface 注解让js识别该方法
@JavascriptInterface
public void sayHello(String msg) {// 属于android的
Toast.makeText(this, "我被js调用了 : " + msg, 0).show();
}
}
index.html界面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试android与js交互</title>
<script>//js调用android里面的方法
function jsCallAndroid() {
test.sayHello("你好");
}
//android调用js方法
function androidCallJs(msg) {
alert("我被android调用了 : " + msg);
}</script>
</head>
<body>
<input type="submit" value="js调用android里面的方法" οnclick="jsCallAndroid()"/>
</body>
</html>