一、简介

在安卓开发中我们会遇到许多处理网页的功能,以下就是我在实际中用到的分享给大家

1.显示和渲染Web页面

2.可和JavaScript交互调用

二、常用的方法

//激活WebView为活跃状态,能正常执行网页的响应
webView.onResume() ; //当页面被失去焦点被切换到后台不可见状态,需要执行onPause
//通过onPause动作通知内核暂停所有的动作比如JavaScript执行。
webView.onPause();
//在关闭了Activity时,如果Webview的音乐或视频,还在播放。就必须销毁Webview//需要先从父容器中移除webview,然后再销毁webview:
rootLayout.removeView(webView);
webView.destroy();
private WebViewClient webViewClient = new WebViewClient() {

@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
} @Override
public boolean shouldOverrideUrlLoading(WebView webview, String url) {
webview.loadUrl(url);
return true;
}
// 设定加载开始的操作
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
LogUtil.print("onPageStarted");
} //设定加载结束的操作
@Override
public void onPageFinished(WebView view, String url) {
String viewTitle = view.getTitle();
title_webview = viewTitle;
Url = url;
}
} @Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
//用javascript隐藏系统定义的404页面信息
LogUtil.print("onReceivedError errorCode =" + errorCode);
String data = "";
view.loadUrl("javascript:document.body.innerHTML=\"" + data + "\""); }
};

三、与js的交互

      mWebView.getSettings().setJavaScriptEnabled(true);
//有JS交互的话加上下边的
mWebView.addJavascriptInterface(new JSInterfaceCoupon(this), "yulinjs");
    // yulinjs为标识符交互的字段
mWebView.getSettings().setSupportZoom(false);
mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); //设置 缓存模式
if (!NullUtil.isStringEmpty(type)&&type.equals(TOKEN_URL)){
mOpenFileWebChromeClient = new OpenFileWebChromeClient(this);
mWebView.setWebChromeClient(mOpenFileWebChromeClient);
}else{
mWebView.setWebChromeClient(new CustomChromeClient("HostApp", HostJsScope.class));
}
//书写累通过构造传入当前上下文
public class JSInterface {
Activity activity;
public JSInterface(Activity activity){
this.activity=activity;
}
//写方法来调用js
@JavascriptInterface
public void jumpToYuQuanAdmin(String id){
Intent intent = new Intent(activity, ActivityUserInfo_2.class);
int uid = UnitSociax.stringParseInt(id);
intent.putExtra("uid", uid);
activity.startActivity(intent);
}
    }
//下面是html代码
<script type="text/javascript">
function showToast() {
yulinjs.showToast("哈哈啊哈 ");
}
</script> </head>
<body>
<input type="button" value="调用"
onClick="showToast()"/>
</body> html代码很简单,在想调用原生方法的js方法中使用yulinjs.shwoToast(“”)就可以成功调用原生方法。我们可以通过它来复制信息,获取点击事件等。
(shwoToast是原生方法名,android是我们在addJavascriptInterface方法中自己定义的名字)。

四、返回每一层的问题

/是否可以后退
Webview.canGoBack()
//后退网页
Webview.goBack() //是否可以前进
Webview.canGoForward()
//前进网页
Webview.goForward()
//手机下方返回按钮返回上一页并不是退掉整个webview
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (isNeedBack && keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
mWebView.goBack();// 返回前一个页面
return true;
}
return super.onKeyDown(keyCode, event);
}
 

作者:LeiLei_Tua

最新文章

  1. sql 批量更新某个字段的值
  2. 360浏览器遇到文档模式是IE7的解决办法
  3. Intent传递list&lt;bean&gt;集合
  4. Ember.js入门教程、博文汇总
  5. oracle sql 优化
  6. [每日自动更新]Hillstone 山石网科 StoneOS ISP路由表配置文件
  7. 实现textarea自适应的方法
  8. core文件生成总结
  9. [Android开发Tips]Bean的定义
  10. python webdriver 环境搭建详解
  11. 【洛谷2055】【CJOJ2487】【ZJOI2009】 假期的宿舍
  12. DAX/PowerBI系列 - 查询参数用法详解(Query Parameter)
  13. C#如何调用以管理员身份运行的cmd命令提示符
  14. 亚马逊 AWS ip反向解析:Configurable Reverse DNS for Amazon EC2’s Elastic IP Addresses
  15. 在微信小程序中调用本地接口
  16. Mac osx 启用和关闭root用户
  17. MMIO----Wav格式文件解析
  18. elementUI 通用确认框
  19. 23、Django实战第23天:视频播放页面
  20. TP框架中模糊查询实现

热门文章

  1. 【前端_js】Json对象和Json字符串的区别
  2. 【js】input 焦点到内容的最后
  3. linux 安装elasticsearch
  4. linux笔记(1)
  5. Mysql之数据库用户操作
  6. Hive学习笔记(三)-- DML和DDL操作
  7. Python 基础(一)
  8. 初试webpack打包
  9. 记一次运行spark程序遇到的权限问题
  10. python之路 --- python模块初认识&amp;数据类型