您的位置:首页 > 移动开发 > Android开发

Android 之webview加载html 和js做交互

2017-01-18 09:47 435 查看
话不多说:先撸一个html:名字叫index.html,这个html放到哪里,大家应该都知道吧,哈哈!!!!

<!DOCTYPE html>

<script type="text/javascript">
function buttonClick(){
var u = navigator.userAgent, app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isAndroid) {
window.object.back();
} else if(isIOS) {
iback();
}
}
</script>

<html lang="en">

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta name="description" content="">

<meta name="viewport" content="width=device-width; initial-scale=1.0">

</head>

<button id="hallo" onclick="buttonClick()"> 点击button</button>

</body>

</html>


注意下面这段代码:在html中有这样一段代码:它是用来标识android 和ios交互事件

var u = navigator.userAgent, app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isAndroid) {
window.object.back();
} else if(isIOS) {
iback();
}


Maintivity:

package com.example.jsandroiddemo;

import android.app.Activity;
import android.graphics.Bitmap;
import android.net.http.SslError;
import android.os.Bundle;
import android.webkit.JavascriptInterface;
import android.webkit.SslErrorHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class MainActivity extends Activity {

private WebView webview;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview=(WebView) findViewById(R.id.webview);
webview.getSettings().setBuiltInZoomControls(true); //显示放大缩小 controler
webview.getSettings().setSupportZoom(true); //可以缩放
//屏幕自适应
webview.getSettings().setUseWideViewPort(true);
webview.getSettings().setLoadWithOverviewMode(true);
//加载本地html
webview.loadUrl("file:///android_asset/index.html");
webview.getSettings().setJavaScriptEnabled(true);
//js和android做交互
webview.addJavascriptInterface(new Object(), "object");

webview.setWebChromeClient(new WebChromeClient());

webview.setWebViewClient(new WebViewClient() {

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
//                super.onReceivedSslError(view, handler, error);
// TODO Auto-generated method stub
//允许https://的访问
//Android使用WebView加载https地址打不开的问题  小米
handler.proceed();
}

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//加载完成
//                Toast.makeText(WebActivity.this, "加载完成", Toast.LENGTH_SHORT).show();
}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
//加载开始
//                Toast.makeText(WebActivity.this, "加载开始", Toast.LENGTH_SHORT).show();
}

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
// TODO Auto-generated method stub
super.onReceivedError(view, errorCode, description, failingUrl);
//加载失败
//          Toast.makeText(WebActivity.this, "加载失败", Toast.LENGTH_SHORT).show();
}
});

}

public class Object{
//写一个js调android的方法
//Android 4.2以上系统,通过在Java的远程方法上面声明
// @JavascriptInterface可以解决WebView漏洞。如下面代码:
//@JavascriptInterface一定的加上
@JavascriptInterface
public void back(){
Toast.makeText(MainActivity.this, "回调成功啦。。。", 1).show();
}

}

}


网络访问权限:网络访问权限:网络访问权限:重要事说三遍

<uses-permission android:name="android.permission.INTERNET" />


效果图:源码就不附上了,直接copy就可以的。。。。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: