文档章节

android webview应用

李光正
 李光正
发布于 2015/10/15 14:53
字数 647
阅读 21
收藏 0
点赞 0
评论 0
在Android的所有控件中,WebView的功能是最强大的作为直接从android.webkit.Webview实现的类可以拥有浏览器所有的功能,Webview可以让开发人员从Java转向html+js这样的方式,如果你掌握ajax可以方便通过这种方式配合远端server来实现一些内容。

  Webview中设置字体,可以使用 WebView.getSettings().setDefaultFontSize() 方法,设置屏幕的缩放级别可以使用 WebView.getSettings().setDefaultZoom() 来实现。

  目前在Android 2.2中已经加入了Adobe Flash Player功能,我们可以WebView.getSettings().setPluginsEnabled(true); 设置允许Gears插件来实现网页中的Flash动画显示。

  Webview可以帮助我们设计内嵌专业的浏览器,相对于部分以省流量需要服务器中转的那种 html解析器来说有本质的区别,因为它们没有JavaScript脚本解析器,Android123认为未来这种方式不会有什么发展空间,代表软件Opera Mini以及国内的一些名为“XX浏览器”。

  在WebView中显示AlertDialog窗口提示,这里我们通过JavaScript脚本直接互通,在一个WebView中直接显示js的alert可以重写onJsAlert方法即可。

  public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result) 
    {  
        new AlertDialog.Builder(myApp)  
            .setTitle("Android开发网")  
            .setMessage(message)    //从形参中传递的,同时还有String url等等
            .setPositiveButton(android.R.string.ok,  
                    new AlertDialog.OnClickListener()  
                    {  
                        public void onClick(DialogInterface dialog, int which)  
                        {  
                            result.confirm();    //从形参的结果中分析
                        }  
                    })  
            .setCancelable(false)  
            .create()  
            .show();  
 
        return true;  
    }; 

 

 

webview退出,播放器关闭

import java.lang.reflect.InvocationTargetException;
 
import java.lang.reflect.Method;
 

import android.app.Activity;
 
import android.os.Bundle;
 
import android.util.Log;
 
import android.webkit.WebSettings;
 
import android.webkit.WebSettings.PluginState;
 
import android.webkit.WebView;
 
import android.widget.FrameLayout;
 

public class WebviewActivity extends Activity
 
{
 
WebView playView;
 
@Override
 
public void onCreate(Bundle savedInstanceState)
 
{
 
super.onCreate(savedInstanceState);
 

setContentView(R.layout.webview);
 
playView = (WebView) findViewById(R.id.webviewshow);
 
WebSettings webSettings = playView.getSettings();
 
webSettings.setJavaScriptEnabled(true);
 
webSettings.setBuiltInZoomControls(true);
 
webSettings.setPluginState(PluginState.ON);
 
playView.loadUrl("file:///android_asset/swf_view.html");
 
}
 


private void callHiddenWebViewMethod(String name)
 
{
 
if (playView != null)
 
{
 
try
 
{
 
Method method = WebView.class.getMethod(name);
 
method.invoke(playView);
 
}
 
catch (NoSuchMethodException e)
 
{
 
Log.i("No such method: " + name, e.toString());
 
}
 
catch (IllegalAccessException e)
 
{
 
Log.i("Illegal Access: " + name, e.toString());
 
}
 
catch (InvocationTargetException e)
 
{
 
Log.d("Invocation Target Exception: " + name, e.toString());
 
}
 
}
 
}
 

@Override
 
protected void onPause()
 
{
 
super.onPause();
 
playView.pauseTimers();
 

if (isFinishing())
 
{
 
playView.loadUrl("about:blank");
 
setContentView(new FrameLayout(this));
 
}
 
callHiddenWebViewMethod("onPause");
 
}
 

@Override
 
protected void onResume()
 
{
 
super.onResume();
 
callHiddenWebViewMethod("onResume");
 
}
 

}

 

清空webview缓存

 

1.删除保存于手机上的缓存.

复制到剪贴板  Java代码
  1. // clear the cache before time numDays 
  2. private int clearCacheFolder(File dir, long numDays) {  
  3. int deletedFiles = 0;  
  4. if (dir!= null && dir.isDirectory()) {  
  5. try {  
  6. for (File child:dir.listFiles()) {  
  7. if (child.isDirectory()) {  
  8. deletedFiles += clearCacheFolder(child, numDays); 
  9.  
  10. if (child.lastModified() < numDays) {  
  11. if (child.delete()) {  
  12. deletedFiles++; 
  13. } catch(Exception e) {  
  14. e.printStackTrace(); 
  15. return deletedFiles;  


调用:clearCacheFolder(Activity.getCacheDir(), System.currentTimeMillis());//删除此时之前的缓存.
  2. 打开关闭使用缓存:

  优先使用缓存:
  1.WebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
  不使用缓存:
  1.WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

  3.在退出应用的时候加上如下代码:

复制到剪贴板  Java代码
  1. File file = CacheManager.getCacheFileBaseDir(); 
  2.   if (file != null && file.exists() && file.isDirectory()) { for (File item : file.listFiles()) { item.delete(); 
  3.   } 
  4.   file.delete(); 
  5.   } 
  6.   context.deleteDatabase("webview.db"); 
  7.   context.deleteDatabase("webviewCache.db"); 

本文转载自:http://blog.csdn.net/liguangzhenghi/article/details/7224439

共有 人打赏支持
李光正
粉丝 5
博文 64
码字总数 0
作品 0
大兴
Android WebView Memory Leak WebView内存泄漏

在这次开发过程中,需要用到webview展示一些界面,但是加载的页面如果有很多图片就会发现内存占用暴涨,并且在退出该界面后,即使在包含该webview的Activity的destroy()方法中,使用webview...

Drealin
2013/01/07
0
26
WebView!!!!日记~~

● Android设备多分辨率的问题 Android浏览器默认预览模式浏览 会缩小页面 WebView中则会以原始大小显示 Android浏览器和WebView默认为mdpi。hdpi相当于mdpi的1.5倍 ldpi相当于0.75倍 三种解...

Neo_
2012/11/01
0
0
WebView与JavaScript交互

在WebView中使用JavaScript   如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript。   一旦使能之后,你也可以自己创建接口在你的应用和JavaScript代码间进行交互...

ljrapple
2014/07/29
0
0
[译] 通过安全浏览保护 WebView

原文地址:Protecting WebView with Safe Browsing 原文作者:Nate Fischer 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:androidxiao 校对者:jasonxia23 由软件工...

Android_开发者
06/16
0
0
Android WebView 与JS的数据交互

关于WebView 我们知道目前android市场上的一些应用采用的开发方式大致分为三种:Native App、Web App、Hybrid App。本文主要是Hybrid App中实现的主要技术native组件与js的数据交互的理解以及...

习惯_搬砖
2015/05/06
0
0
WebView使用总结(应用函数与JS函数互相调用)

1.当只用WebView的时候,最先注意的当然是在配置文件中添加访问因特网的权限; 2.如果访问的页面中有Javascript,必须设置支持Javascript: Java代码 3.如果希望点击链接由自己处理而不是新开And...

带梦想一7飞
2013/01/04
0
0
基于HT for Web的Web SCADA工控移动应用

在电力、油田燃气、供水管网等工业自动化领域Web SCADA的概念已经提出了多年,早先年的Web SCADA前端技术大部分还是基于Flex、Silverlight甚至Applet这样的重客户端方案,在HTML5流行前VML和...

xhload3d
2015/03/18
0
2
如何获取WebView的内容宽度[翻译]

原文网址:http://android.pimmos.com/2011/03/24/how-to-retrieve-the-contentwidth-of-a-webview/ The extensive Android SDK allows you to do many great things with particular views ......

拉风的道长
2013/04/23
0
5
apk漏洞记录1:伪加密+设备管理器不可删+webview漏洞

伪加密1:apk打开需要密码 成因:修改zip的头,把文件的加密标志设置为ture,还原就把加密标志设置为false.利用了Android处理zip文件不判断头里的加密信息,其他压缩软件,java默认实现的zip api...

科技创造
2014/09/04
0
0
【疑难杂症】 Android WebView 无法打开天猫页面

欢迎转载,但请务必注明出处! [http://ryanhoo.github.io/blog/2014/09/17/android-webview-setdomstorageenabled][9] Android WebView 突然无法打开天猫的详情页,一直停留在加载状态。而在...

RyanHoo
2014/09/17
0
5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式 Factory工厂模式 Singleton单例模式 Delegate委派模式 Strategy策略模式 Prototype原型模式 Template模板模式 Spring5 beans 接口实例化 代理Bean操作 ...

小致dad
14分钟前
0
0
SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
9
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
12
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
203
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部