`

WebView加载页面 页面上上传图片

阅读更多
private Object getHtmlObject() {
		Object insertObj = new Object() {

			// public void shlnk(final String site_url) {
			public void sharelink(final String site_url,
					final String image_url, final String site_name) {
				runOnUiThread(new Runnable() {
					@Override
					public void run() {
					}
				});
			}

		};

		return insertObj;
	}
 // 获得WebView组件 
WebView webView = (WebView) findViewById(R.id.webview); 
webView.requestFocus();
 // 触摸焦点起作用 
// 设置页面是否可以用到
js webView.getSettings().setJavaScriptEnabled(true); 
// 设置WebView的一些缩放功能点 // 滚动条风格 
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
// 取消滚动条 webView.setHorizontalScrollBarEnabled(false); 
// webView.getSettings().setSupportZoom(true); 
// webView.getSettings().setBuiltInZoomControls(true);
 webView.setHorizontalScrollbarOverlay(true); // 设置默认为utf-8 
// webView.getSettings().setDefaultTextEncodingName("gbk"); 
webView.getSettings().setDefaultTextEncodingName("utf-8"); 
// 在同种分辨率的情况下,屏幕密度不一样的情况下,自动适配页面 
// DisplayMetrics dm = getResources().getDisplayMetrics(); 
// int scale = dm.densityDpi; 
// if (scale == 240) { 
// // webView.getSettings().setDefaultZoom(ZoomDensity.FAR); 
// } else if (scale == 160) { 
// webView.getSettings().setDefaultZoom(ZoomDensity.MEDIUM); 
// } else { // webView.getSettings().setDefaultZoom(ZoomDensity.CLOSE); // }

 

// 判断加载的页面URL地址是否正确
		if (URLUtil.isNetworkUrl(Urls.URL) == true) {
			// webView.addJavascriptInterface(getHtmlObject(), "jsObj");
			// webView.loadUrl("http://172.**.**.**/js.html");
			webView.addJavascriptInterface(getHtmlObject(), "jsObj");
			// webView.loadUrl("http://172.**.**.**//index.html");
			// 加载

			webView.loadUrl(Urls.URL);
                        //webView.loadUrl("javascript: add('"
      + bn+ "')");
			// 设置web视图客户端
			webView.setWebViewClient(new WebViewClient() {
				@Override
				public boolean shouldOverrideUrlLoading(WebView view, String url) {
					// 设置点击网页里面的链接还是在当前的webview里跳转
					view.loadUrl(url);
					return true;
				}

				@Override
				public void onPageStarted(WebView view, String url,
						Bitmap favicon) {
					// TODO Auto-generated method stub
					super.onPageStarted(view, url, favicon);

										rl_load_progress.setVisibility(View.VISIBLE);
											webView.getSettings().setSupportZoom(true);
						webView.getSettings().setBuiltInZoomControls(true);
						// webView.setInitialScale(70);
									}

				// @Override
				// public void onReceivedSslError(WebView view,
				// SslErrorHandler handler, android.net.http.SslError error) {
				// // 设置webview处理https请求
				// handler.proceed();
				// }

				// @Override
				// public void onReceivedError(WebView view, int errorCode,
				// String description, String failingUrl) {
				// super.onReceivedError(view, errorCode, description,
				// failingUrl);
				// // Toast.makeText(StartActivity.this,
				// // errorCode + " " + description, Toast.LENGTH_SHORT)
				// // .show();
				// }

				@Override
				public void onPageFinished(WebView view, String url) {
					// TODO Auto-generated method stub
					super.onPageFinished(view, url);

											rl_load_progress.setVisibility(View.GONE);
				}
			});
			WebChromeClient chromeClient = new WebChromeClientImpl();
			webView.setWebChromeClient(chromeClient);
		}

 

final public static int FILE_SELECTED = 4;
	public static ValueCallback<Uri> mUploadMessage;
private class WebChromeClientImpl extends WebChromeClient {

		@Override
		public void onProgressChanged(WebView view, int newProgress) {
			// pb.setProgress(newProgress);
			// if (newProgress == 100) {
			// pb.setVisibility(View.GONE);
			// }
			super.onProgressChanged(view, newProgress);
		}

		// 扩展支持alert事件
		@Override
		public boolean onJsAlert(WebView view, String url, String message,
				JsResult result) {
			Builder builder = new Builder(view.getContext());
			builder.setTitle("商机通提示").setMessage(message)
					.setPositiveButton("确定", null);
			builder.setCancelable(false);
			builder.setIcon(R.drawable.ic_launcher);
			AlertDialog dialog = builder.create();
			dialog.show();
			result.confirm();
			return true;
		}

		// 扩展浏览器上传文件
		// 3.0++版本
		public void openFileChooser(ValueCallback<Uri> uploadMsg,
				String acceptType) {
			mUploadMessage = uploadMsg;
			Intent i = new Intent(Intent.ACTION_GET_CONTENT);
			i.addCategory(Intent.CATEGORY_OPENABLE);
			i.setType("image/*");
			StartActivity.this.startActivityForResult(
					Intent.createChooser(i, "File Chooser"), FILE_SELECTED);

		}

		// 3.0--版本
		public void openFileChooser(ValueCallback<Uri> uploadMsg) {
			mUploadMessage = uploadMsg;
			Intent i = new Intent(Intent.ACTION_GET_CONTENT);
			i.addCategory(Intent.CATEGORY_OPENABLE);
			i.setType("image/*");
			StartActivity.this.startActivityForResult(
					Intent.createChooser(i, "file Browser"), FILE_SELECTED);
		}

		// For Android 4.1
		public void openFileChooser(ValueCallback<Uri> uploadMsg,
				String acceptType, String capture) {
			mUploadMessage = uploadMsg;
			Intent i = new Intent(Intent.ACTION_GET_CONTENT);
			i.addCategory(Intent.CATEGORY_OPENABLE);
			i.setType("image/*");
			StartActivity.this.startActivityForResult(
					Intent.createChooser(i, "File Chooser"), FILE_SELECTED);

		}

	}

	protected class myWebChromeClient extends WebChromeClient {
		// For Android 3.0+
		public void openFileChooser(ValueCallback<Uri> uploadMsg,
				String acceptType) {
			mUploadMessage = uploadMsg;
			Intent i = new Intent(Intent.ACTION_GET_CONTENT);
			i.addCategory(Intent.CATEGORY_OPENABLE);
			i.setType("*/*");
			StartActivity.this.startActivityForResult(
					Intent.createChooser(i, "File Chooser"), FILE_SELECTED);
		}

		// For Android < 3.0
		public void openFileChooser(ValueCallback<Uri> uploadMsg) {
			mUploadMessage = uploadMsg;
			Intent i = new Intent(Intent.ACTION_GET_CONTENT);
			i.addCategory(Intent.CATEGORY_OPENABLE);
			i.setType("*/*");
			StartActivity.this.startActivityForResult(
					Intent.createChooser(i, "File Chooser"), FILE_SELECTED);
		}
	}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
		System.out.println("sssssss");
if (requestCode == FILE_SELECTED) {
			Log.e("TAG4", "onActivityResult");
			if (null == mUploadMessage)
				return;
			Uri result = data == null || resultCode != RESULT_OK ? null : data
					.getData();

			/*
			 * String[] proj = { MediaStore.Images.Media.DATA };
			 * 
			 * Cursor actualimagecursor =
			 * managedQuery(result,proj,null,null,null);
			 * 
			 * int actual_image_column_index =
			 * actualimagecursor.getColumnIndexOrThrow
			 * (MediaStore.Images.Media.DATA);
			 * 
			 * actualimagecursor.moveToFirst();
			 * 
			 * String img_path =
			 * actualimagecursor.getString(actual_image_column_index);
			 * 
			 * File file = new File(img_path);
			 */
			mUploadMessage.onReceiveValue(result);
			mUploadMessage = null;
			Log.e("file", "file");

		}
	}

 

分享到:
评论

相关推荐

    webview 监听页面显示事件

    这意味着页面的所有资源(如图片、脚本等)都已经加载完毕。在这里,我们可以监听页面是否完全显示。 为了监听页面的显示事件,我们可以这样实现`WebViewClient`: ```java webView.setWebViewClient(new ...

    Android 替换WebView加载失败时的页面

    做webview加载网页时,遇到一个问题,自带的webview错误页面不美观,于是自定义一个view提示用户,网上很多方法,也不稳定实现替换,结合网上的一些例子,加以优化和拓展,特此写一个完整版本的Demo供大家拿来直接...

    android Webview加载本地图片,自适应布局大小

    总之,Android中的WebView加载本地图片并自适应布局大小,需要结合HTML、CSS、JavaScript以及Java代码进行综合运用。理解WebView的工作原理和配置选项,以及合理的图片尺寸控制和性能优化,都是实现这一功能的关键点...

    Android实现WebView图片缓存,替换加载前默认图片的样式

    然而,对于复杂的网页,特别是那些包含大量图片的页面,优化图片的加载和显示至关重要。本篇将详细介绍如何在Android的WebView中实现图片缓存,替换加载前的默认图片样式,并实现图片点击事件。 一、图片缓存 1. ...

    WebView加载失败错误处理

    本文将详细介绍如何在WebView加载失败时,自定义错误页面。 首先,我们来理解WebView的基本使用。在Android Studio中创建一个新的Activity,然后在布局XML文件中添加一个WebView组件: ```xml &lt;WebView android:...

    Android WebView加载网页以及本地图片缓存问题

    本文将深入探讨如何使用WebView加载网页以及本地图片,并解决缓存问题。 一、WebView的基本使用 1. 初始化WebView:首先,我们需要在布局XML文件中添加WebView组件,并在对应的Activity或Fragment中找到该组件。...

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

    本示例“android中webview加载本地页面,并处理js事件”着重讲解如何利用`WebView`加载本地HTML页面,并通过JavaScript Interface与Java代码进行交互,同时在HTML中动态生成组件如`button`。 1. **WebView基本使用**...

    Android实现WebView懒加载

    通过懒加载,我们可以先加载页面的基本结构,然后在用户滚动到相应位置时再加载图片或其他非必需资源,从而提高初始加载速度。 在Android 8.0(API级别26)之前,原生的WebView性能可能无法满足需求,特别是在处理...

    替换WebView加载网页失败时的页面

    这样,当WebView加载网页失败时,就会显示我们自定义的错误页面,而不是默认的简陋提示。 除此之外,还可以考虑增加重试功能。比如,当用户点击错误页面上的按钮时,可以重新加载网页: ```java webView....

    Android webview加载网页.zip

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

    详解android 用webview加载网页(https和http)

    在 Android 中,当 WebView 加载 HTTP 请求的网页时,如果网页中有一张图片,并且该图片的地址是 HTTPS 请求的,这时候 WebView 加载的网页,图片是不显示的。这种情况被称为“Mixed Content”(混合内容),是由于 ...

    替换WebView加载网页失败

    然而,有时我们可能会遇到“替换WebView加载网页失败”的问题,这通常是由于多种原因引起的。以下是一些可能导致这个问题的关键知识点以及解决策略。 1. **初始化问题**:首先,确保在使用WebView之前正确地初始化...

    使用webview加载本地html页面,并处理html页面中的javascript事件

    这篇博文“使用webview加载本地html页面,并处理html页面中的javascript事件”探讨了如何利用WebView来加载本地HTML文件,并且如何处理HTML页面中的JavaScript事件,这对于创建混合型应用或实现特定功能(如在原生...

    webview显示图片并下载

    当网页中包含图片时,Webview会自动处理图片的加载。但是,如果图片来源于本地,我们可以通过`loadDataWithBaseURL()`或`loadData()`方法加载HTML字符串来显示图片。例如: ```java String ...

    安卓 webview 单页面

    在安卓应用开发中,Webview ...总之,使用Webview加载单页面应用需要关注多个方面,包括基本的加载操作、交互设计、安全性以及性能优化。理解并掌握这些要点,能帮助我们构建更加高效、安全且用户体验良好的安卓应用。

    android webView加载html 并引用本地资源(图片、字体库)

    以上就是Android中使用WebView加载HTML并引用本地资源的基本步骤。通过结合HTML、CSS和JavaScript,你可以构建出丰富的交互式应用界面,同时利用本地资源提升性能和用户体验。记得在实际项目中,还要考虑安全性和...

    webview更改页面字体

    当我们需要对WebView加载的页面进行自定义样式,比如更改字体,可能会遇到一些挑战,因为WebView本质上是加载HTML、CSS和JavaScript代码,而这些内容的样式通常在网页本身中定义。然而,我们可以通过一些方法来实现...

    Android Webview 加载 H5Video

    最近公司某项功能需要WebView加载H5的Video,搜索很多资料后发现很多问题,都是关键代码片段,因为每个项目每个人产生的问题不同,Video在webview中加载不出来原因很多,可能是客户端少了参数,也可能是前端出了问题...

    Android中WebView拿到当前的网址和上一页面的网址

    在实际开发中,有时我们需要获取WebView当前加载的URL以及用户访问的前一个页面的URL,以便进行更复杂的功能实现,比如导航控制、历史记录管理和数据追踪。下面将详细解释如何在Android中实现这一需求。 首先,我们...

    QtWebView在线加载网页Demo

    通过学习和实践这个Demo,你可以了解到如何在Windows环境中使用QtWebView加载在线地图服务,同时掌握Qt的网络编程和Web交互能力。此外,你还可以进一步探索QtWebKit的高级特性,如本地存储、Web Inspector等,以提升...

Global site tag (gtag.js) - Google Analytics