一、简介

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

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

安卓WebView在项目中总结的更多相关文章

  1. 在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)

    最近公司的大厅要重做,我协助主程一起制作新大厅和新框架,前面制作的编辑器也派上了用场.等全部功能做完后我会再写一个复盘,这两天主程在忙于写热更新的功能,所以把接入分享SDK功能的任务交给了我,Shar ...

  2. hybird app项目实例:安卓webview中HTML5拍照图片上传

    应用的平台环境:安卓webview: 涉及的技术点: (1) <input type="file" > :在开发中,安卓webview默认点击无法调用文件选择与相机拍照 ...

  3. iOS 之项目中遇到的问题总结

    昨天去一家公司面试,面试官问了我在项目开发中遇到过哪些问题,是什么引起的,怎样解决的? 当时由于有点小紧张只说出了一两点,现在就来好好总结一下. 问题: 1.两表联动 所谓的两表联动就是有左右两个表格 ...

  4. Web API项目中使用Area对业务进行分类管理

    在之前开发的很多Web API项目中,为了方便以及快速开发,往往把整个Web API的控制器放在基目录的Controllers目录中,但随着业务越来越复杂,这样Controllers目录中的文件就增加 ...

  5. 【转】GitHub 排名前 100 的安卓、iOS项目简介

    GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...

  6. 记一次ASP.NET MVC性能优化(实际项目中)

    前言 在开发中为了紧赶项目进度而未去关注性能的问题,在项目逐渐稳定下来后发现性能令人感到有点忧伤,于是开始去关注这方面,本篇为记录在开发中遇到的问题并解决,不喜勿喷.注意:以下问题都是在移动端上出现, ...

  7. 在已有 Xcode 项目中 加入Cordova框架

    转自:http://www.jianshu.com/p/656838ae92bc 我们知道,在UIKit中的UIWebView虽然已经提供了很多功能了,比如JavaScript和Objc之间的通信.但 ...

  8. React Native 在现有项目中的探路

    移动开发中,native开发性能和效果上无疑是最好的. 但是在众多的情况下,native开发并不是最优的选择.当需求经常改动的时候,当预算有限的时候,当deadline很近的时候,native开发的成 ...

  9. 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)

    排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...

随机推荐

  1. 【Mysql】Mysql主从库搭建过程(爬完坑后整理所得)

    Mysql主从数据库搭建流程 新手开始学习mysql主从库,遇到一些问题,总结后写出以下流程 下面以5.7.23版本为例介绍 第一步:去官网下载5.7.23版本的免安装压缩包形式的mysql文件,贴上 ...

  2. ubuntu下RedisDesktopManager的安装,redis可视化工具

    官方网站:https://redisdesktop.com/download 一句命令行解决: sudo snap install redis-desktop-manager 或者直接通过软件管理中心 ...

  3. python入门:输出1-10的所有数

    #!/usr/bin/env python # -*- coding:utf-8 -*- #输出1-10的所有数 """ 变量kaishi的赋值为数字1,while 真, ...

  4. shell-code-拷贝文件

    #!/bin/bash while read F do cp ${F}"_pe_1.fastq.gz" /public/home/chenjy/usr/ZD/data/cleand ...

  5. Docker容器技术的核心原理

    目录 1 前言 2 docker容器技术 2.1 隔离:Namespace 2.2 限制:Cgroup 2.3 rootfs 2.4 镜像分层 3 docker容器与虚拟机的对比 1 前言 上图是百度 ...

  6. HDU 5236 Article 期望

    题意: 你现在要打\(n\)个字符,但是程序随时可能会崩溃. 你可以在恰当的时机按下 \(Ctrl-S\)键,崩溃后,会从最后一次保存的情况继续开始打字. 具体是这样的: 在每个第\(i-0.1s(i ...

  7. springboot-vue-自定义注解限制接口调用

    新建注解: /** * 想要权限拦截的接口就加上这个注解 */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Doc ...

  8. loj2031 「SDOI2016」数字配对

    跑最大费用最大流,注意到每次 spfa 出来的 cost 一定是越来越少的,啥时小于 \(0\) 了就停了吧. #include <iostream> #include <cstri ...

  9. (转)React 入门实例教程

    作者: 阮一峰 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React ...

  10. python - 接口自动化测试实战 - case1 - 再次优化版

    本次优化: 1.  各级分Package 2.  封装[ReadExcel]类 3.  封装[ReadConfig]类 4.  封装[GetLog]类 5.  引入ddt数据驱动测试,优化测试用例代码 ...