安卓WebView在项目中总结
一、简介
在安卓开发中我们会遇到许多处理网页的功能,以下就是我在实际中用到的分享给大家
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在项目中总结的更多相关文章
- 在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)
最近公司的大厅要重做,我协助主程一起制作新大厅和新框架,前面制作的编辑器也派上了用场.等全部功能做完后我会再写一个复盘,这两天主程在忙于写热更新的功能,所以把接入分享SDK功能的任务交给了我,Shar ...
- hybird app项目实例:安卓webview中HTML5拍照图片上传
应用的平台环境:安卓webview: 涉及的技术点: (1) <input type="file" > :在开发中,安卓webview默认点击无法调用文件选择与相机拍照 ...
- iOS 之项目中遇到的问题总结
昨天去一家公司面试,面试官问了我在项目开发中遇到过哪些问题,是什么引起的,怎样解决的? 当时由于有点小紧张只说出了一两点,现在就来好好总结一下. 问题: 1.两表联动 所谓的两表联动就是有左右两个表格 ...
- Web API项目中使用Area对业务进行分类管理
在之前开发的很多Web API项目中,为了方便以及快速开发,往往把整个Web API的控制器放在基目录的Controllers目录中,但随着业务越来越复杂,这样Controllers目录中的文件就增加 ...
- 【转】GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...
- 记一次ASP.NET MVC性能优化(实际项目中)
前言 在开发中为了紧赶项目进度而未去关注性能的问题,在项目逐渐稳定下来后发现性能令人感到有点忧伤,于是开始去关注这方面,本篇为记录在开发中遇到的问题并解决,不喜勿喷.注意:以下问题都是在移动端上出现, ...
- 在已有 Xcode 项目中 加入Cordova框架
转自:http://www.jianshu.com/p/656838ae92bc 我们知道,在UIKit中的UIWebView虽然已经提供了很多功能了,比如JavaScript和Objc之间的通信.但 ...
- React Native 在现有项目中的探路
移动开发中,native开发性能和效果上无疑是最好的. 但是在众多的情况下,native开发并不是最优的选择.当需求经常改动的时候,当预算有限的时候,当deadline很近的时候,native开发的成 ...
- 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)
排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...
随机推荐
- 服务器TIME_WAIT和CLOSE_WAIT分析和解决办法
先上两张图: 查看TIME_WAIT和CLOSE_WAIT数的命令: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a ...
- i2c drivers
Linux设备驱动程序架构分析之一个I2C驱动实例 转载于:http://blog.csdn.net/liuhaoyutz 内核版本:3.10.1 编写一个I2C设备驱动程序的工作可分为两部分 ...
- LeetCode(292) Nim Game
题目 You are playing the following Nim Game with your friend: There is a heap of stones on the table, ...
- German Collegiate Programming Contest 2015
// Legacy Code #include <iostream> #include <cstdio> #include <cstring> #include & ...
- Linux之crond 服务介绍
在介绍crond之前,先科普一下什么是进程?什么是线程?什么是程序? 程序:程序是一组指令及参数的集合,指令按照既定的逻辑控制计算机运行.进程则是运行着的程序,是操作系统执行的基本单位.线程则是为了节 ...
- 将系统从.Net Core2.0升级到.Net Core2.1
最近将手头的一个.Net Core2.0开发的小系统升级到最新的Core2.1.升级期间遇到了一些问题,现将问题以及解决方法整理汇总一下. 一是作为笔记,二也为跟各位分享一下.如过能帮到看到这帖子的人 ...
- flask-博客文章
提交和显示博客文章 文章模型 class Post(db.Model): __tablename__ = 'posts' id = db.Column(db.Integer, primary_key= ...
- Http协议中的get和post
Http中post和get区别,是不是用get的方法用post都能办到? Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符 ...
- Maven本地库在哪?
Maven的本地存储库是一个本地文件夹,用于存储你的所有项目的依赖项(插件Jars和其他Maven下载的文件).简单的说,当你建立一个Maven项目,所有依赖文件将存储在Maven的本地库. 默认情况 ...
- LoadRunner web_set_sockets_option()--常用函数
web_set_sockets_option()--常用函数 设置sockets的选项. intweb_set_sockets_option(const char * option,const cha ...