android webview与H5的交互 方法无响应
@SuppressLint({ "SetJavaScriptEnabled", "JavascriptInterface" })
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
webView = (WebView) findViewById(R.id.webView);
String url = getIntent().getStringExtra("urlPath");
WebSettings webSettings = webView.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
// WebView加载web资源
webView.loadUrl(url);
// 从assets目录下面的加载html
// webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.addJavascriptInterface(this, "javatojs");
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);
return true;
}
@Override
public void onReceivedSslError(WebView view,
SslErrorHandler handler, SslError error) {
// 重写此方法可以让webview处理https请求。
super.onReceivedSslError(view, handler, error);
handler.proceed();
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// 在页面加载开始时调用。
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
// 在页面加载结束时调用。
super.onPageFinished(view, url);
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
// TODO Auto-generated method stub
super.onReceivedError(view, errorCode, description, failingUrl);
webView.setVisibility(View.GONE);
// 返回
ImageView backView = (ImageView) findViewById(R.id.iv_licaike_back);
backView.setVisibility(View.VISIBLE);
backView.setOnClickListener(WebViewActivity.this);
}
@Override
public void onLoadResource(WebView view, String url) {
// 在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。
super.onLoadResource(view, url);
}
});
// 主要处理解析,渲染网页等浏览器做的事情 辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
setTitle(title);
}
});
}
@JavascriptInterface // 这个最好每个H5调用都加,否则有些机型和版本不支持
public void reqDataFromApp() {
webView.loadUrl("javascript:getDataToH5(‘" + "toStr" + "‘)");
}