一、简介

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

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. PHP网站实现地址URL重定向

    网站建设中,通常会用到网站地址URL的重定向,这样的好处是有利于你网站的SEO优化,也就是让你的网站实现伪静态,下面简单介绍一下实现的两种方法: 1.在Apache配置文件中设置重定向 首先找到Apa ...

  2. GoF23种设计模式之行为型模式之命令模式

    一.概述 将一个请求封装为一个对象,从而可以使用不同的请求对客户端进行参数化.对请求排队或记录请求日志,以及支持撤销的操作. 二.适用性 1.当抽象出待执行的动作以参数化某个对象的时候. 2.当需要在 ...

  3. 动态规划:Codeforces Round #427 (Div. 2) C Star sky

    C. Star sky time limit per test2 seconds memory limit per test256 megabytes inputstandard input outp ...

  4. Linux学习-systemctl 针对 timer 的配置文件

    如何使用 systemd 内建的 time 来处理各种任务呢? systemd.timer 的优势 在 archlinux 的官网 wiki 上面有提到,为啥要使用 systemd.timer 呢? ...

  5. Activity树图

  6. edge浏览器识别ip地址为手机号的解决办法

    edge浏览器识别ip地址为手机号的解决办法 今天突然发现类似101.231.70.242的ip地址会在edge浏览器里面识别为可点击的链接,后来看了一下,原因就是被识别为手机号了,因为我发现点击的时 ...

  7. 使用 D8 分析 javascript 如何被 V8 引擎优化的

    在上一篇文章中我们讲了如何使用 GN 编译 V8 源码,文章最后编译完成的可执行文件并不是 V8,而是 D8.这篇我们讲一下如何使用 D8 调试 javascript 代码. 如果没有 d8,可以使用 ...

  8. C语言总结(3)

    1.字符输入函数getchar 输入一个字符 char ch; ch=getchai(); 字符输出函数putchar 输出一个字符 putchar(输出参数): 2.调用scanf和printf输入 ...

  9. 将模型储存到本地-FastCoder

    // // ViewController.m // 模型转data储存 // // Created by 谭启宏 on 16/3/4. // Copyright © 2016年 tqh. All ri ...

  10. [SCOI2011]糖果 (差分约束)

    题目链接 Solution 差分约束乱搞就好了. 需要注意的地方: 对于大于等于的直接联等于,应为等于,因为对于我满足条件而言,等于总是最好的. 对于等于的,注意要建双向边. 然后要开 \(long~ ...