`

android之WebView的使用

阅读更多
为了先体验一下效果,截了一个图

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<TextView android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="@string/hello" />
	<EditText android:hint="请输入URL" android:id="@+id/EditText01"
		android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>
	<Button android:text="OK" android:id="@+id/Button01"
		android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>
	<WebView android:id="@+id/WebView" android:layout_width="fill_parent"
		android:layout_height="wrap_content"></WebView>
</LinearLayout>


package com.Aina.Android;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
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;
import android.widget.TextView;

public class Test extends Activity {
    /** Called when the activity is first created. */
	private EditText et = null;
	private Button btn = null;
	private WebView wv = null;
	private WebSettings ws = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        et = (EditText) this.findViewById(R.id.EditText01);
        btn = (Button) this.findViewById(R.id.Button01);
        wv = (WebView) this.findViewById(R.id.WebView);
        ws = wv.getSettings();
        ws.setAllowFileAccess(true);//设置允许访问文件数据
        ws.setJavaScriptEnabled(true);//设置支持javascript脚本
        ws.setBuiltInZoomControls(true);//设置支持缩放
        wv.setWebViewClient(new WebViewClient(){
        	public boolean shouldOverrideUrlLoading(WebView view,String url){
        		//当有新连接时,使用当前的 WebView
        		view.loadUrl(url);
        		return true;
        	}
        });
        wv.setWebChromeClient(new WebChromeClient(){
        	public boolean onJsAlert(WebView view,String url,String message,final JsResult result){
        		//构建一个Builder来显示网页中的alert对话框
        		Builder builder = new Builder(Test.this);
        		builder.setTitle("提示对话框");
        		builder.setMessage(message);
        		builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener(){

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						result.confirm();
					}
        			
        		});
        		builder.setCancelable(false);
        		builder.create();
        		builder.show();
        		return true;
        	}
        	public boolean onJsConfirm(WebView view,String url,String message,final JsResult result){
        		Builder builder = new Builder(Test.this);
        		builder.setTitle("带选择的对话框");
        		builder.setMessage(message);
        		builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener(){

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						result.confirm();
					}
        			
        		});
        		builder.setNeutralButton(android.R.string.cancel, new AlertDialog.OnClickListener(){

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						result.cancel();
					}
					
        		});
        		builder.setCancelable(false);
        		builder.create();
        		builder.show();
        		return true;
        	}
        	public boolean onJsPrompt(WebView view,String url,String message,String defaultValue,final JsPromptResult result){
        		LayoutInflater inflater = LayoutInflater.from(Test.this);
        		final View v = inflater.inflate(R.layout.prom_dialog, null);
        		//设置 TextView对应网页中的提示信息
        		((TextView)v.findViewById(R.id.TextView_PROM)).setText(message);
        		//设置EditText对应网页中的输入框
        		((EditText)v.findViewById(R.id.EditText_PROM)).setText(defaultValue);
        		Builder builder = new Builder(Test.this);
        		builder.setTitle("带输入的对话框 ");
        		builder.setView(v);
        		builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener(){

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						String value = ((EditText)v.findViewById(R.id.EditText_PROM)).getText().toString();
						result.confirm(value);
					}
        			
        		});
        		builder.setNegativeButton(android.R.string.cancel, new AlertDialog.OnClickListener(){

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						result.cancel();
					}
        			
        		});
        		builder.setOnCancelListener(new DialogInterface.OnCancelListener(){

					@Override
					public void onCancel(DialogInterface dialog) {
						// TODO Auto-generated method stub
						result.cancel();
					}
        			
        		});
        		builder.create();
        		builder.show();
        		return true;
        	}
        	//设置网页加载的进度条
        	public void onProgressChanged(WebView view,int newProgress){
        		Test.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress*100);
        		super.onProgressChanged(view, newProgress);
        	}
        	//设置应用程序的标题
        	public void onReceivedTitle(WebView view,String title){
        		Test.this.setTitle(title);
        		super.onReceivedTitle(view, title);
        	}
        });
        btn.setOnClickListener(new Button.OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				String url = et.getText().toString();
				//判断输入的内容是不是网址
				if(URLUtil.isNetworkUrl(url)){
					wv.loadUrl(url);
				}else{
					et.setHint("输入的网址不合法,请重新输入");
//					et.setText("输入的网址不合法,请重新输入");
				}
			}
        	
        });
    }
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if(keyCode==KeyEvent.KEYCODE_BACK && wv.canGoBack()){
			wv.goBack();//返回前一个页面
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
    
}


prom_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/TextView_PROM"
    	android:layout_width="fill_parent"
	android:layout_height="wrap_content"/>
    <EditText 
	android:id="@+id/EditText_PROM"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:selectAllOnFocus="true"
	android:scrollHorizontally="true"/>
</LinearLayout>


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.Aina.Android" android:versionCode="1" android:versionName="1.0">
	<application android:icon="@drawable/icon" android:label="@string/app_name">
		<activity android:name=".Test" android:label="@string/app_name">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>

	</application>
	<uses-permission android:name="android.permission.INTERNET" />

</manifest> 

注意不要忘记加上网络权限啊!
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>

<html>
  <head>
    <title>index.jsp</title>
<script type="text/JavaScript">   
function s(){
alert("Good Morning!");    
}
function d(){
confirm("Are you ok?")
}
function f(){
prompt("What’s your name?")
}
</script> 
  </head>
  
  <body>
  下面我们演示三种对话框
  <br/><br/>
  <input type="button" value="警告,提醒对话框" onclick="s()">
  <br/><br/>
  <input type="button" value="带选择的对话框" onclick="d()">
  <br/><br/>
  <input type="button" value="要求用户输入的对话框" onclick="f()">
  </body>
</html>
  • 大小: 474.9 KB
分享到:
评论

相关推荐

    Android之WebView使用Demo

    **Android之WebView使用Demo** 在Android开发中,`WebView`是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容,极大地扩展了Android应用的功能。本教程将详细讲解如何在Android应用中使用`WebView...

    com.google.android.webview.apk

    webview全称叫做Android System WebView,它是Android生态系统的重要组成部分,也是Chrome浏览器的内核。可以让你的手机变得瞬间畅通,它会及时优化网页相关数据,有着接入式的操作体验数据,各种类型的应用程序可...

    Android实现WebView懒加载

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中嵌入网页内容,实现类似浏览器的功能。然而,对于大型或者资源丰富的网页,WebView的加载性能可能会成为用户体验的一个瓶颈。"Android实现...

    Android System Webview 90.0.4430.82

    这是AOSP Webview, 包名com.android.webview, 不带google的 带google包名的可以下载 google system webview覆盖安装,可以略过 此文件包含 arm和arm64的webview这是AOSP Webview, 包名com.android.webview, 不带...

    android 使用webview控件,注意在android9.0以后必须使用https才能访问网页

    然而,随着网络安全性的不断提升,Android系统对WebView的使用也有了更严格的要求。在Android 9.0(Pie)及更高版本中,如果你的应用试图加载HTTP(非加密)链接,系统将不再支持这种行为,强制要求使用更安全的...

    Android中webview使用x5内核集成demo

    Android x5内核集成demo 解决webview在使用内核时跟h5混合调用时出现的白屏,加载缓慢,vue报错各种兼容问题。在x5内核加载失败时,会切换成系统本身的内核来加载h5内容。如果项目上架Google商店等海外市场运营的,...

    android 8.0 webview 拍照预览、二维码扫描

    android 8.0 webview 拍照、预览、二维码扫描比较完整的例子,对于权限检查控制,有比较完善的提示写法。可以下载后,直接在android studid上运行,编译版本和target版本均是SDK android 8.0,最低版本设置成了...

    Android通过WEBVIEW调用HTTPS

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。当涉及到安全的网络通信时,HTTPS协议因其数据加密和身份验证特性成为首选。本文将深入探讨如何在Android...

    android的webView的登录实例

    本实例将详述如何使用Android Studio 3.1.2版本,通过WebView来创建一个简单的登录界面,该界面使用本地HTML页面进行设计。下面我们将逐步探讨实现这个功能的关键步骤和涉及的技术点。 1. **创建新项目** 首先,...

    com.android.webview-95.0.4638.50

    总之,WebView是Android平台上不可或缺的一部分,对于应用开发者来说,理解和熟练使用WebView是提高用户体验和应用安全性的关键。同时,定期更新WebView到最新版本,也是保证应用正常运行和用户数据安全的重要措施。

    com.google.android.webview

    android system webview 适配系统&gt;=5.0

    在android的webview中实现websocket通信

    "AndroidWebView中实现WebSocket通信" 在 Android 的 WebView 中实现 WebSocket 通信是当前移动端应用开发中的一个热门话题。WebSocket 是 HTML5 规范中的一项技术,可以实现客户端与服务器之间的实时双向通信。在...

    android webview 版本69.0

    总的来说,这个“android webview 版本69.0”是AOSP的一个组件,基于Chromium,适合那些希望在没有Google服务的情况下使用WebView的应用开发者。开发者在使用时应考虑其更新策略和安全性,同时充分利用其提供的API来...

    Android使用WebView调用H5完成摄像头扫描二维码

    在Android应用开发中,WebView是一个非常重要的组件,它允许我们加载和显示网页内容。这篇教程将详细介绍如何在Android中利用WebView来调用H5页面,从而实现摄像头扫描二维码的功能。 首先,我们需要理解WebView的...

    Android WebView 去除标题

    总的来说,去除Android WebView的标题可以通过调整布局、禁用内置工具栏和使用JavaScript操作网页内容等方式实现。同时,JavaScript交互为开发者提供了更多定制化网页体验的可能性。在实际项目中,应根据具体需求...

    Android下WebView中调用系统相机拍照范例

    `INTERNET`权限允许WebView加载网络资源,`CAMERA`权限允许应用使用设备的摄像头,而`WRITE_EXTERNAL_STORAGE`权限则是为了在SD卡上保存拍摄的照片。 接下来,我们要创建一个自定义的WebView类,扩展`WebViewClient...

    Android代码-Android-X5WebView基本封装

    Android-X5WebView基本封装和使用 通过OkHttp拦截器、自定义CookieJar有效完成客户端与H5端的Cookie同步管理 监听WebView的加载进度 滚动条的设置(隐藏或者显示,内侧显示还是外侧显示) 优化X5WebView的预加载问题...

    Android System Webview 89.0.4389.105

    这是AOSP Webview, 包名com.android.webview, 不带google的 带google包名的可以下载 google system webview覆盖安装,可以略过 此文件包含 arm和arm64的webview

    Android中WebView使用

    以上就是关于Android中WebView的基本使用和一些常见操作。在实际项目中,你可能还需要根据需求进行更复杂的定制和优化,例如性能调整、内存管理、错误处理等。通过深入理解和实践,你可以将WebView的功能发挥到极致...

    android使用webView实现java程序与js脚本的相互调用

    本文将详细介绍如何在Android中使用WebView实现Java程序与JS脚本的相互调用。 ### 1. 添加WebView到布局 首先,在XML布局文件中添加WebView组件,例如在`activity_main.xml`中: ```xml &lt;WebView android:id="@+...

Global site tag (gtag.js) - Google Analytics