`

WebView使用总结1

阅读更多
1.当只用WebView的时候,最先注意的当然是在配置文件中添加访问因特网的权限;

2.如果访问的页面中有Javascript,必须设置支持Javascript:
 
   webview.getSettings().setJavaScriptEnabled(true);
  


3.如果希望点击链接由自己处理而不是新开Android的系统browser中响应该链接.给WebView添加一个事件监听对象(WebViewClient)并重写其中的一些方法 shouldOverrideUrlLoading对网页中超链接按钮的响应
mWebView.setWebViewClient(new WebViewClient() {
/**
* Show in webview not system webview.
*/
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return super.shouldOverrideUrlLoading(view, url);
}
}

    这样就保证了每次打开的页面都是在WebView实例中显示运行的;

4.在显示WebView时,点击手机Back时,会完全退出当前Activity,如果想退到历史浏览页面:重写back监听:
public boolean onKeyDown(int keyCode, KeyEvent event) {
 WebView mWebView = (WebView) findViewById(R.id.browser);
 if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
     mWebView.goBack();
     return true;
  }
 return super.onKeyDown(keyCode, event);
}


5.Android SDK提供了一个schema前缀为"file:///android_asset/".WebView遇到这样的schema,就去当前包中的 assets目录中找内容.如:"file:///android_asset/demo.html"
下面一段代码是对网页中JS的类似Alert()类的函数进行相应的重写响应:
webView.setWebChromeClient(new WebChromeClient() {
			public boolean onJsAlert(WebView view, String url, String message,
					final JsResult result) {
				AlertDialog.Builder b = new AlertDialog.Builder(BrowserJs.this);
				b.setTitle("Alert");
				b.setMessage(message);
				b.setPositiveButton(android.R.string.ok,
						new AlertDialog.OnClickListener() {
							public void onClick(DialogInterface dialog,
									int which) {
								result.confirm();
							}
						});
				b.setCancelable(false);
				b.create();
				b.show();
				return true;
			};

			@Override
			public boolean onJsConfirm(WebView view, String url,
					String message, final JsResult result) {
				AlertDialog.Builder b = new AlertDialog.Builder(BrowserJs.this);
				b.setTitle("Confirm");
				b.setMessage(message);
				b.setPositiveButton(android.R.string.ok,
						new AlertDialog.OnClickListener() {
							public void onClick(DialogInterface dialog,
									int which) {
								result.confirm();
							}
						});
				b.setNegativeButton(android.R.string.cancel,
						new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog,
									int which) {
								result.cancel();
							}
						});
				b.setCancelable(false);
				b.create();
				b.show();
				return true;
			};

			@Override
			public boolean onJsPrompt(WebView view, String url, String message,
					String defaultValue, final JsPromptResult result) {
				final LayoutInflater factory = LayoutInflater
						.from(BrowserJs.this);
				final View v = factory.inflate(
						R.layout.prompt_dialog, null);
				((TextView) v.findViewById(R.id.prompt_message_text))
						.setText(message);
				((EditText) v.findViewById(R.id.prompt_input_field))
						.setText(defaultValue);

				AlertDialog.Builder b = new AlertDialog.Builder(BrowserJs.this);
				b.setTitle("Prompt");
				b.setView(v);
				b.setPositiveButton(android.R.string.ok,
						new AlertDialog.OnClickListener() {
							public void onClick(DialogInterface dialog,
									int which) {
								String value = ((EditText) v
										.findViewById(R.id.prompt_input_field))
										.getText().toString();
								result.confirm(value);
							}
						});
				b.setNegativeButton(android.R.string.cancel,
						new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog,
									int which) {
								result.cancel();
							}
						});
				b.setOnCancelListener(new DialogInterface.OnCancelListener() {
					public void onCancel(DialogInterface dialog) {
						result.cancel();
					}
				});
				b.show();
				return true;
			};

			public void onProgressChanged(WebView view, int newProgress) {
				BrowserJs.this.getWindow().setFeatureInt(
						Window.FEATURE_PROGRESS, newProgress * 100);
				super.onProgressChanged(view, newProgress);
			}

			public void onReceivedTitle(WebView view, String title) {
				BrowserJs.this.setTitle(title);
				super.onReceivedTitle(view, title);
			}
		});

		go.setOnClickListener(new OnClickListener() {
			public void onClick(View view) {
				String url = text.getText().toString();
				webView.loadUrl(url);
			}
		});
		webView.loadUrl("file:///android_asset/index.html");


在上述代码中,用到的prompt_dialog.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:gravity="center_horizontal" android:orientation="vertical"
	android:layout_width="fill_parent" android:layout_height="wrap_content">
	<TextView android:id="@+id/prompt_message_text"
		android:layout_width="fill_parent" android:layout_height="wrap_content" />
	<EditText android:id="@+id/prompt_input_field"
		android:layout_width="fill_parent" android:layout_height="wrap_content"
		android:selectAllOnFocus="true" android:scrollHorizontally="true"
		android:minWidth="250dp" />
</LinearLayout>


还有assets中的Html文件:
<html>
<script type="text/javascript">
  function onAlert(){
	  alert("This is a alert sample from html");
  }
  function onConfirm(){
	  var b=confirm("are you sure to login?");
	  alert("your choice is "+b);
  }
  function onPrompt(){
	  var b=prompt("please input your password","aaa");
	  alert("your input is "+b);
  }
</script>
<pre>
<input type="button" value="alert" onclick="onAlert()"/>
<input type="button" value="confirm" onclick="onConfirm()"/>
<input type="button" value="prompt" onclick="onPrompt()"/>

<a href="http://www.google.com"/>Google</a>
</pre>
</html>
分享到:
评论

相关推荐

    WebView的使用总结

    这篇博文将对WebView的使用进行总结,包括基本用法、设置权限、数据交互以及优化技巧。 首先,我们来看一下WebView的基本用法。在Android布局文件中,添加一个WebView元素,如: ```xml &lt;WebView android:id="@+...

    webView 使用指南及使用心得总结

    以下是对WebView使用指南及使用心得的详细总结: 一、WebView的基本使用 1. 添加依赖:在AndroidManifest.xml中添加Internet权限,以确保WebView能够访问网络。 ```xml ``` 2. 在布局文件中添加WebView: ```xml...

    WebView使用总结3(应用函数与JS函数互相调用)

    这篇博文"WebView使用总结3(应用函数与JS函数互相调用)"聚焦于如何实现Android应用中的Java函数与JavaScript函数之间的交互,这对于构建混合式应用或者增强Web页面与原生应用的集成至关重要。 首先,我们要理解...

    android webview的用法总结

    1. WebView加载速度与性能优化: - WebView加载资源时,每个资源如图片、CSS、JavaScript和HTML的加载时间大约在10-200毫秒之间,平均约为30毫秒。如果页面资源过多,加载时间会显著增加,影响用户体验。 - ...

    原生登录cookie保持提供webview使用

    总结来说,原生登录cookie保持提供给WebView使用涉及到Android的`CookieManager`类和WebView的生命周期管理。通过以上步骤,我们可以有效地在原生应用和WebView之间共享登录状态,为用户提供无缝的浏览体验。在实际...

    WebView的使用Demo

    总结,WebView是Android应用与网页内容交互的重要工具,通过合理的配置和设置,开发者可以构建功能丰富的混合式应用。同时,要注意安全性和性能优化,以提供良好的用户体验。在实际项目中,开发者还需要根据具体需求...

    Webview简单使用Demo

    1. **Webview的引入与设置** 在AndroidManifest.xml中,我们需要为应用添加Internet权限,因为Webview需要访问网络资源: ```xml ``` 在布局文件(如activity_main.xml)中,我们需要添加一个Webview组件: `...

    WebView使用Ionic框架混合式开发

    总结,使用Ionic框架进行混合式开发Android应用,可以充分利用Web技术的便捷性,同时借助WebView和Cordova插件实现与原生平台的深度集成。理解并掌握这些知识点,将有助于开发者高效地构建出功能完备、性能优良的...

    Android中webview使用js与java交互

    总结起来,Android的WebView提供了一种灵活的方式让JavaScript和Java代码进行通信,这对于构建混合型应用或者在App中实现复杂交互功能非常有用。通过理解并熟练掌握JavaScript Interface的使用,开发者可以充分利用...

    简单WebView的使用-浏览器功能

    在Android开发中,WebView是一个...总结,通过上述步骤,我们可以使用Android的WebView组件构建一个基本的内置浏览器,加载和展示网页。不过,实际应用中可能还需要考虑更多细节,比如错误处理、性能优化、隐私策略等。

    Android WebView的使用方法总结

    本文将深入探讨Android WebView的使用方法,包括如何打开指定网页、处理页面跳转、传递数据、支持JavaScript以及优化用户体验等方面。 1. 打开指定URL网页: 要加载一个网页,首先需要实例化WebView对象并设置其...

    android 使用WebView浏览网页

    1. **WebView基本使用** - `WebView`是Android SDK中的一个类,继承自`View`,主要用于加载和显示HTML、XML或任何其他Web内容。 - 初始化:在布局文件中添加`&lt;WebView&gt;`标签或者在代码中创建`WebView`对象。 - ...

    webView 使用指南

    总结,WebView是Android开发中的一个重要工具,它能够将网页内容无缝集成到应用中,同时通过JavaScript与原生代码的交互,可以实现复杂的功能。正确理解和使用WebView,能极大地提升应用的用户体验和功能多样性。

    Webview使用外加长按图片保存

    总结起来,要实现在Android的WebView中长按图片并保存的功能,主要步骤包括:监听WebView的长按事件、判断点击的是图片、获取图片数据、保存图片到本地以及更新媒体库。在实际开发中,还要考虑到错误处理和用户体验...

    android WebView控件的使用

    ### Android WebView 控件的使用详解 #### 一、引言 WebView是Android系统中的一个重要组件,主要用于在应用程序中展示Web页面。它可以帮助开发者快速地集成Web内容到原生应用中,实现网页浏览功能,这对于开发...

    webview的使用,优化,缓存

    1. 网页缓存:Webview支持HTTP缓存,通过设置`WebSettings`的缓存模式,可以控制如何使用本地缓存。 ```java // Android 示例 webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); ``` 2. ...

    Android webview使用方法总结

    Android WebView 使用方法总结 Android WebView 是一个非常强大的控件,允许开发者在 Android 应用程序中嵌入 Web 内容。下面是 Android WebView 使用方法总结的一些重要知识点: 一、WebViewClient 的使用 在 ...

    webview使用demo

    本教程将详细介绍如何在Android中使用WebView,并实现JS与Java对象的相互调用。 一、WebView的基本使用 1. 添加依赖 首先,确保在`build.gradle`文件中添加了对WebView的支持库。在`dependencies`块中加入以下代码...

    Android webView拍照与展示相册图片

    总结,Android的WebView结合JavaScriptInterface可以实现丰富的功能,包括与系统相机和相册的交互。通过Java代码处理相机拍照和相册选择的逻辑,然后通过JavaScript将图片数据传递回WebView进行展示,为用户提供更...

    android webview 加载网页 样例

    总结,Android WebView是构建混合应用或展示网页内容的强大工具。通过学习和理解上述知识点,你可以创建一个功能丰富的Web应用程序,并与网页内容进行深度交互。记得在实际开发中,还要关注性能优化和用户体验提升,...

Global site tag (gtag.js) - Google Analytics