文档章节

android webview应用

李光正
 李光正
发布于 2015/10/15 14:53
字数 647
阅读 23
收藏 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
大兴
私信 提问
安卓 WebView Goback()方法

想添加一个WebView到应用当中,你只需要包含WebView标签到你的Activity布局文件当中。例如,下面是一个WebView填充满屏幕的布局。 在WebView中载入网页,可以使用loadUrl()方法,例如: 这段...

冰瞳
2015/04/17
2
0
Android中webview跟JAVASCRIPT中的交互

在android的应用程序中,可以直接调用webview中的javascript代码,而webview中的javascript代码,也可以去调用ANDROID应用程序(也就是JAVA部分的代码).下面举例说明之: 1 JAVASCRIPT脚本调用and...

华宰
2011/09/06
28.3K
2
Android WebView Memory Leak WebView内存泄漏

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

Drealin
2013/01/07
0
26
Android WebDriver 浏览器自动测试工具介绍

Selenium WebDriver 是浏览器自动测试工具,提供轻量级和优雅的方式来测试web应用。Selenium WebDriver作为Android SDK extra,支持Android 2.3(Gb)及向前版本。 WebDriver是端对端的测试,...

小卒过河
2011/10/27
7.2K
1
WebView深度学习(三)之WebView的内存泄漏、漏洞以及缓存机制原理和解决方案

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

aweiloveandroid
2018/01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

echarts实现中国地图

最近项目中有个需求:在地图上展示各省市的数据分布,像这样: 项目中接入的图表展示工具是echart,查了echart官网,发现并没有中国地图相关的实现,唯一接近的,只有香港18区人口密度。没办...

Funcy1122
8分钟前
0
0
持续集成工具Jenkins结合SVN的安装和使用

持续集成工具Jenkins结合SVN的安装和使用 2018年06月08日 11:30:23 止步前行 阅读数:2932 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxd1435513775/ar...

linjin200
15分钟前
0
0
ES6 对象的解构赋值

基本用法 1.等号右边如果不是数组,将会报错(不是可遍历结构) 2.解构赋值 var, let, const命令声明均适用 3.set结构也可解构赋值(具有Iterator接口,可采用数组形式结构赋值) set解构:任何...

Jack088
17分钟前
0
0
微信小程序富文本table超出宽度处理

一、微信小程序富文本table超出宽度处理 处理思路: 使用正则删除table中的width属性。 //去除table的宽度content = content.replace(/<table[^>]*>/gi, function (match, capture) { ...

tianma3798
19分钟前
0
0
阿里云全站加速DCDN全面支持WebSocket协议

WebSocket协议可以为网站和应用提供真正的双向通信,具有控制开销、保持连接状态、更强实时性、更好的压缩效果等优点,是当下低延时应用最常采用的一种技术协议。为了更好的满足客户在实时通...

阿里云官方博客
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部