webView使用方法小结

1、添加权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。

2、在要Activity中生成一个WebView组件:WebView webView = new WebView(this);

3、设置WebView基本信息:

如果访问的页面中有Javascript,则webview必须设置支持Javascript。

webview.getSettings().setJavaScriptEnabled(true);

触摸焦点起作用

requestFocus();

取消滚动条

this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);

4、设置WevView要显示的网页:

互联网用:webView.loadUrl("http://www.google.com");

本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets文件中

5、如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。

给WebView添加一个事件监听对象(WebViewClient)

并重写其中的一些方法

shouldOverrideUrlLoading:对网页中超链接按钮的响应。

当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url

onLoadResource

onPageStart

onPageFinish

onReceiveError

onReceivedHttpAuthRequest

6、如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。

覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。

[java] view plaincopyprint?

public boolean onKeyDown(int keyCoder,KeyEvent event){

if(webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK){

webview.goBack(); //goBack()表示返回webView的上一页面

return true;

}

return false;

}

8、webView.getSettings().setJavaScriptEnabled(true);

webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

9、

* 通过WebSettings设置WebView的一些属性、状态。通过webView.getSettings获得

例如:setAllowFileAccess(是否能访问文件数据)

setBuiltInZoomControls(设置是否支持缩放)、

setCacheMode(设置缓冲的模式)

setJavaScriptEnabled(设置是否支持JavaScript)........

* 通过WebViewClient来自定义网页浏览程序。专门辅助WebView处理各种通知、请求等事件的类。      通过webView.setWebChromeClient获得

方法:

doUpdateVisitedHistory (更新历史记录)

onFormResubmission(应用程序重新请求网页数据)

onLoadResource(加载指定地址提供的资源)

onPageFinished(网页加载完毕)

onPageStarted(网页开始加载)

onReceivedError(报告错误信息)

onScaleChanged(WebView发生改变)

shouldOverrideUrlLoading(控制新的连接在当前WebView中打开)

* WebChromeClient专门用来辅助WebView处理JavaScript的对话框、图标、网站标题、加载进度等。

方法:onCloseWindow(关闭WebView)

onCreateWindow(创建WebView)

onJsAlert(处理Js中的Alert对话框)、onJsConfirm(处理Js中的Confirm对话框)、onJsPrompt(处理JS中的Prompt对话框)

onProgressChanged(加载进度条改变)

onReceivedIcon(网页图标更改)

onReceivedTitle(网页标题更改)

onRequestFocus(WebView显示焦距)

package com.dan;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.content.DialogInterface.OnClickListener;

import android.graphics.Bitmap;

import android.os.Bundle;

import android.view.View;

import android.view.Window;

import android.webkit.JsPromptResult;

import android.webkit.JsResult;

import android.webkit.URLUtil;

import android.webkit.WebChromeClient;

import android.webkit.WebSettings;

import android.webkit.WebView;

import android.webkit.WebViewClient;

import android.widget.Button;

import android.widget.EditText;

public class WebActivity extends Activity {

private WebView webView;

private EditText urlEdt;

private Button btn;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.web);

urlEdt = (EditText)findViewById(R.id.edt_1);

btn = (Button)findViewById(R.id.btn_1);

webView = (WebView)findViewById(R.id.web);

WebSettings settings = webView.getSettings();

//webView.loadUrl("http://10.0.2.2/affiliate/code/login.php");

//设置支持Js脚本

settings.setJavaScriptEnabled(true);

//设置可以访问文件

settings.setAllowFileAccess(true);

//支持缩放

settings.setBuiltInZoomControls(true);

//设置WebViewClient

webView.setWebViewClient(new WebViewClient(){

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

@Override

public void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

}

@Override

public void onPageStarted(WebView view, String url, Bitmap favicon) {

super.onPageStarted(view, url, favicon);

}

});

//设置WebChromeClient

webView.setWebChromeClient(new WebChromeClient(){

@Override

public boolean onJsAlert(WebView view, String url, String message,

JsResult result) {

AlertDialog.Builder alert = new AlertDialog.Builder(WebActivity.this);

alert.setTitle("提示对话框");

alert.setMessage(message).setPositiveButton("确定", new OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

}

});

alert.create().show();

return true;

}

@Override

public boolean onJsConfirm(WebView view, String url,

String message, JsResult result) {

return super.onJsConfirm(view, url, message, result);

}

@Override

public boolean onJsPrompt(WebView view, String url, String message,

String defaultValue, JsPromptResult result) {

return super.onJsPrompt(view, url, message, defaultValue, result);

}

@Override

public void onProgressChanged(WebView view, int newProgress) {

WebActivity.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress*100);

super.onProgressChanged(view, newProgress);

}

@Override

public void onReceivedTitle(WebView view, String title) {

WebActivity.this.setTitle("中国世贸通加盟管理登录页");

super.onReceivedTitle(view, title);

}

});

btn.setOnClickListener(new Button.OnClickListener(){

public void onClick(View v) {

String url = urlEdt.getText().toString();

if( URLUtil.isNetworkUrl(url) ){

webView.loadUrl(url);

}else{

urlEdt.setHint("输入的网址错误,请重新输入");

}

}

});

}

}

* 后退 和 前进  canGoBack 与canGoForward

//后退

if( (keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack() ){

webView.goBack();

return true;

}

将Html代码通过String的形式被加载到WebView中,而且在Html中可以引用存储在设备中的图片资源等。这个方式可以非常方便的实现RichTextField的效果,尤其是对某些程序提供一些本地的简单文档时,非常方便。

下边是实现这个功能的源代码:

public void loadHTML() {        final String mimeType = "text/html";        final String encoding = "utf-8";        final String html = "<h1>Header</h1><p>Custom HTML</p>                          <p><img src=\"file:///android_asset/image1.jpg\" />          
               </p>";        WebView wv = (WebView) findViewById(R.id.wv1);        wv.loadDataWithBaseURL("fake://not/needed", html,                            mimeType, encoding, "");    }   //wView.loadUrl("file:///android_asset/index.html");   -----打开本包内asset目录下的index.html文件
 //wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html"); -----打开本地sd卡内的index.html文件 //wView.loadUrl("http://wap.baidu.com"); -----打开指定URL的html文件 ......

webView.setInitialScale(30); //这个就是重点,你可以在这里根据需求来设置缩放比例

时间: 2024-10-21 12:54:18

webView使用方法小结的相关文章

【转】TextView长按复制实现方法小结

有这么一个需求,用户在浏览文本信息时希望长按信息就能弹出复制的选项方便保存或者在别的页面使用这些信息.类似的, 就像长按WebView或者EditText的内容就自动弹出复制选项. 这里面主要是2个特点: 1,用户只能浏览文本信息而不能编辑这些文本信息; 2,用户对着文本信息长时间点按可以弹出”复制” 选项实现复制; 网上有好多种方法可实现,也比较零散, 此处做个小结,希望有所帮助. 1,通过继承EditText,自定义TextView 1 2 3 4 5 6 7 8 9 10 11 12 13

[Android] TextView长按复制实现方法小结(转载)

这是别人写的,既然别人总结过了,那我就不花时间研究这个了,但往后会补充一些使用经验之类的 原文地址:http://blog.csdn.net/stzy00/article/details/41477813 本文地址:http://www.cnblogs.com/rossoneri/p/4432499.html 有这么一个需求,用户在浏览文本信息时希望长按信息就能弹出复制的选项方便保存或者在别的页面使用这些信息.类似的, 就像长按WebView或者EditText的内容就自动弹出复制选项. 这里面

TextView长按复制实现方法小结

有这么一个需求,用户在浏览文本信息时希望长按信息就能弹出复制的选项方便保存或者在别的页面使用这些信息.类似的, 就像长按WebView或者EditText的内容就自动弹出复制选项. 这里面主要是2个特点: 1,用户只能浏览文本信息而不能编辑这些文本信息; 2,用户对着文本信息长时间点按可以弹出"复制" 选项实现复制; 网上有好多种方法可实现,也比较零散, 此处做个小结,希望有所帮助. 1,通过继承EditText,自定义TextView public class NewTextView

Linux将服务设置为开机自启动的方法小结

Linux设置为开机自启动的几种方法小结 和Windows一样,Linux也可以将一些服务设置为开机自启动,这样可以避免每次开机都会去打开某一个服带来的麻烦!Linux开机将服务设置为开机自启动的方法大概有一下几种: 一.ntsysv图形界面设置 ntsysv -> NeWT + SysV ,它是使用 newt 库的 SysV 风格的 runlevel 配置工具,Red Hat公司遵循GPL规则所开发的程序,它具有互动式操作界面,您可以轻易地利用方向键和空格键等,开启,关闭操作系统在每个执行等级

网页刷新页面方法小结

1.页面自动刷新:把如下代码加入<head>区域中 <meta http-equiv="refresh" content="20"> 其中20指每隔20秒刷新一次页面. 2.页面自动跳转:把如下代码加入<head>区域中 <meta http-equiv="refresh" content="20;url=https://www.baidu.com/"> 其中20指隔20秒后跳转

(转)java判断string变量是否是数字的六种方法小结

java判断string变量是否是数字的六种方法小结 (2012-10-17 17:00:17) 转载▼ 标签: it 分类: 转发 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return fal

webView loadData 中文乱码问题 webView.loadDataWithBaseURL方法

webView.getSettings().setDefaultTextEncodingName("UTF-8");    webView.loadData(mMerchandise.productDescription,"text/html; charset=UTF-8",null); webView.getSettings().setDefaultTextEncodingName("UTF-8");     webView.loadDataW

.net中TreeView使用方法小结(1)

在新项目的开发中,TreeView的作用很重要,这两天好好的学习了一下treeview的使用方法. 这篇文章主要关注TreeView带有CheckBox的情况. 在TreeView中点击CheckBox触发的函数如下: private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) { }   在这个事件中选中,或者取消的那一个节点为: TreeNode node = e.Node; 使用TreeView控件要经常使用到

[转载]ASP.NET对路径&quot;xxxxx&quot;的访问被拒绝的解决方法小结

异常详细信息: System.UnauthorizedAccessException: 对路径“D:/temp1/MyTest.txt”的访问被拒绝 在windows 2003下,在运行web应用程序的时候出现一下错误: 服务器无法处理请求,-->对路径“C:/temp/mytest.txt”的访问拒绝 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.UnauthorizedAccess