`

WebView的使用(打开网页,下载文件)

阅读更多

在开发中经常在更多页面中用到WebView来显示一个网页,这个网页里面放有下载地址或者链接到别的网页等等。

效果如下:

 

 

 

这个示例很简单,代码中都有注释。下面直接上代码:

 

public class MainActivity extends Activity {

	private static final String URL = "http://demo.91yong.com/mobile/moreApp.jsp?type=2";

	private WebView wvShow;
	private ProgressBar pbLoading;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		wvShow = (WebView) findViewById(R.id.web_view);
		pbLoading = (ProgressBar) findViewById(R.id.pb_loading);

		wvShow.setDownloadListener(new DownloadListener() {

			@Override
			public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
				// 监听下载功能,当用户点击下载链接的时候,直接调用系统的浏览器来下载

				Uri uri = Uri.parse(url);
				Intent intent = new Intent(Intent.ACTION_VIEW, uri);
				startActivity(intent);
			}
		});

		wvShow.setWebViewClient(new WebViewClient() {

			@Override
			public void onPageFinished(WebView view, String url) {
				//页面加载完毕
				super.onPageFinished(view, url);
				if (pbLoading != null && pbLoading.getVisibility() == View.VISIBLE) {
					pbLoading.setVisibility(View.GONE);//进度条不可见
				}
			}

			@Override
			public void onPageStarted(WebView view, String url, Bitmap favicon) {
				//页面开始加载
				super.onPageStarted(view, url, favicon);
				if (pbLoading != null && pbLoading.getVisibility() == View.INVISIBLE) {
					pbLoading.setVisibility(View.VISIBLE);//进度条可见
				}
			}

		});

                wvShow.getSettings().setJavaScriptEnabled(true);//设置支持脚本
		wvShow.getSettings().setBuiltInZoomControls(true);// 设置支持缩放
		wvShow.getSettings().setDefaultZoom(ZoomDensity.FAR);// 屏幕自适应网页,如果没有这个,在低分辨率的手机上显示可能会异常
		wvShow.loadUrl(URL);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.more_app, menu);
		return true;

	}

	@Override
	public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
		super.onCreateContextMenu(menu, v, menuInfo);
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.more_app, menu);

	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
			case R.id.refresh: {// 刷新
				
				wvShow.loadUrl(URL);
				break;
			}
			case R.id.open_in_brower: {// 在浏览器中打开
				
				Uri uri = Uri.parse(URL);
				Intent it = new Intent(Intent.ACTION_VIEW, uri);
				startActivity(it);
				break;
			}
		}
		return true;
	}
}
 

activity_main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <WebView
        android:id="@+id/web_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />
    
    <!-- 正在加载的提示 -->
    <ProgressBar
        android:id="@+id/pb_loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        style="?android:attr/progressBarStyle"
        />

</RelativeLayout>

 

监听了菜单按钮:

 

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
	<item android:id="@+id/refresh" android:title="刷新"
		></item>

	 <item android:id="@+id/open_in_brower" android:title="在浏览器中打开"
		></item>

</menu>
 

 

最后当然不要忘记权限:

 

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

 

项目地址:

https://github.com/michaelye/WebViewDemo

 

 

 

 

  • 大小: 277.2 KB
0
0
分享到:
评论

相关推荐

    android webview实现自身下载文件自动保存SDCARD

    当用户点击网页中的链接进行文件下载时,WebView默认并不会处理文件下载,而是尝试在内置浏览器或者其他应用中打开。为了解决这个问题,我们需要重写WebViewClient的`shouldOverrideUrlLoading`方法,拦截文件下载...

    Android webview加载网页.zip

    这个“Android webview加载网页.zip”文件可能包含了一个示例项目或者教程,帮助开发者理解如何在Android应用中有效地使用WebView。 WebView的使用涉及到以下几个关键知识点: 1. **WebView组件引入**:在...

    使用webview 封使用了webrtc 打开摄像头 的页面demo

    在本示例中,“使用webview 封装使用了webrtc 打开摄像头的页面demo”意味着我们要在Webview中集成Webrtc,以便在Android应用中通过Web接口调用摄像头功能。 首先,我们需要了解Webview的基本用法。在...

    QtWebView在线加载网页Demo

    在本篇文章中,我们将深入探讨QtWebView的使用方法、特性以及如何通过Qt来构建一个在线加载网页的应用。 首先,让我们了解QtWebView的基本概念。QtWebView是基于WebKit引擎的,WebKit是一个开源的Web渲染引擎,被...

    Webview打开本地文件、图片选择的解决方案。版本兼容问题

    综上所述,解决WebView打开本地文件和图片选择的问题,需要处理版本兼容性、安全性和权限管理。在实际开发中,根据具体需求和目标设备范围,选择合适的方法并进行适当的优化,确保应用在不同Android版本上都能正常...

    Android 基于x5Webview 浏览文件 office文档

    总之,"Android 基于x5Webview 浏览文件 office文档"涉及到的关键知识点包括:1) 集成和使用X5WebView;2) 转换Office文档为在线预览链接;3) 处理Android 11的存储权限问题;4) 实现WebView的相关交互功能,如加载...

    webview不能调用手机文件选择、相机和图库的问题demo

    然而,在实际使用过程中,开发者时常会遇到WebView无法调用手机上的文件选择器、相机以及图库功能的问题。这些问题通常涉及到Android权限管理、安全性和API兼容性等问题。本文将深入探讨这些问题,并提供解决方案。 ...

    QT通过WebView访问外部网页

    4. **运行代码示例**:描述中提到的"完整代码,可直接运行"意味着提供的压缩包可能包含一个简单的QT项目,其中`main.cpp`文件包含了创建`QWebView`并加载网页的代码。你可以直接编译运行,或者修改代码以动态加载...

    Android-为了修复ReactNative的WebView组件在安卓端不支持文件上传而包装的一个Webview组件

    1. **React Native WebView组件**:React Native允许开发者使用JavaScript编写原生级别的移动应用,WebView组件则用于在应用中嵌入网页内容。然而,React Native的原生WebView组件在某些功能上与原生Android或iOS的...

    Android中WebView返回到上一个网页

    通过这个简单的示例,我们可以了解到在Android中使用WebView加载网页以及处理返回键来实现回退到上一个网页的基本操作。不过,实际开发中可能还需要考虑其他因素,如网页加载进度的显示、设置自定义加载错误页面、...

    WebView不能传文件解决代码

    ### WebView不能传文件解决代码 在Android开发过程中,利用WebView加载网页内容是非常常见的需求之一。然而,默认情况下,WebView并不能很好地支持文件上传功能。这主要是因为WebView对于`&lt;input type="file"&gt;`这类...

    Android通过JS在线用webview加载PDF文件(无限放大版本)

    在Android开发中,有时我们需要在应用内部展示PDF文件,而Webview是一个常用的选择。Webview不仅可以加载HTML页面,还可以通过JavaScript接口与Android原生代码交互,实现更多功能。本教程将详细讲解如何在Android的...

    Android中使用WebView显示网页

    本文将深入探讨如何在Android中使用WebView显示网页,并涉及如何打包本地网页、加载Web页面、设置启用JavaScript以及使用缓存等关键知识点。 1. **使用WebView组件** Android中的WebView是Android SDK提供的一种...

    android studio使用NanoHTTPD 创建 http 服务器打开html并使用webView打开页面

    在Android开发中,有时我们需要在应用内部展示网页内容或者实现简单的本地服务器功能,这就涉及到`Android Studio`、`NanoHTTPD`以及`WebView`的综合使用。本篇将详细讲解如何利用`Android Studio`集成`NanoHTTPD`来...

    Android WebView实现文件下载功能

    在项目中,可能需要使用WebView加载一个网页,该网页中包含文件下载的链接。当用户点击链接时,WebView会调用DownloadListener的onDownloadStart()方法,然后使用Intent来调用系统浏览器,来实现文件下载的功能。 ...

    Android WebView打开网页一片空白的解决方法

    总的来说,当Android WebView打开网页出现空白时,开发者需要仔细检查SSL证书、网络连接、WebView的配置等多个方面。通过自定义WebViewClient并处理SSL错误,可以有效地解决因证书问题导致的加载失败问题。同时,...

    WebView文件下载

    对于文件下载链接,我们应该阻止WebView直接打开,而是启动一个下载任务。 ```java webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, ...

    android中webview加载本地页面,并处理js事件

    - 使用`WebView.setWebViewClient(new WebViewClient())`防止打开外部链接离开应用。 - 设置`WebView.getSettings().setJavaScriptEnabled(true)`启用JavaScript支持。 - `WebView.getSettings()....

    WebView简单使用Demo

    WebView简单使用Demo通常会展示如何在Android应用中加载和展示一个网页,以及一些基本的交互功能。接下来,我们将深入探讨WebView的相关知识点。 1. **WebView的基本使用** - 首先,在布局文件(如`activity_main....

    Android webview打开相册选择图片并上传到服务器,(亲测可用)

    在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用内展示网页内容,甚至与网页进行交互。本文将详细讲解如何在Android的WebView中实现打开本地相册选择图片,并将其上传到服务器的功能。 首先...

Global site tag (gtag.js) - Google Analytics