文档章节

android webview应用

李光正
 李光正
发布于 2015/10/15 14:53
字数 647
阅读 21
收藏 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深度学习(一)之WebView的基本使用以及Android和js的交互

前言:随着市场需求的不断变化,原生安卓已经无法满足客户的需要了,现在很多app都在使用Android和h5的交互实现某些功能,比如商品详情页,文章详情页面,商品点评页面,还有某些复杂的展示页...

aweiloveandroid
2017/07/01
0
0
WebView!!!!日记~~

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

Neo_
2012/11/01
0
0
WebView深度学习(三)之WebView的内存泄漏、漏洞以及缓存机制原理和解决方案

上两篇文章讲到了WebView的基本使用以及Android和js的交互 以及 全面总结WebView遇到的坑及优化 ,这篇文章讲一下内存泄漏和漏洞处理。如果你想更深入的了解WebView,这篇文章值得一看。 ⇒ ...

aweiloveandroid
01/10
0
0
WebView与JavaScript交互

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

ljrapple
2014/07/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Cointext在阿根廷和土耳其推出比特币现金短信钱包

Cointext于10月15日开始在土耳其和阿根廷提供新的基于SMS的比特币现金钱包服务,这两个国家的加密货币使用量急剧上升,以应对严峻的经济形势。 移动钱包 通过短信处理BCH交易 “比特币是更好...

lpy411
13分钟前
0
0
大数据早课-0918

9.18日早课 1.全局搜索含有abc的文件名称或文件夹的命令 2.当前目录一般用什么表示 3.切换到上一次和上一层命令分别是什么 4.pwd是查看当前目录的什么 5.隐藏文件或文件夹的标识是什么? 怎样...

hnairdb
13分钟前
0
0
mybatis学习笔记一

一、mybaits需要的项目依赖 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artif......

wuyiyi
14分钟前
0
0
CentOS6 安装 GraphicsMagick

1.安装相关依赖: yum install -y gcc libpng libjpeg libpng-devel libjpeg-devel ghostscript libtiff libtiff-devel freetype freetype-devel 2.下载并解压到目录/usr/local/ wget ft......

凯文加内特
16分钟前
0
0
RabbitMq集群使用Nginx做负载均衡

1.配置rabbitmq集群(可以参考前一篇RabbitMq之部署集群) 2.Nginx做负载均衡 注意:Nginx1.90版本后 新增了stream 模块用于一般的 TCP 代理和负载均衡,之前版本不支持 修改Nginx配置文件ngi...

zhaochaochao
21分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部