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"); } }
相关推荐
这意味着页面的所有资源(如图片、脚本等)都已经加载完毕。在这里,我们可以监听页面是否完全显示。 为了监听页面的显示事件,我们可以这样实现`WebViewClient`: ```java webView.setWebViewClient(new ...
做webview加载网页时,遇到一个问题,自带的webview错误页面不美观,于是自定义一个view提示用户,网上很多方法,也不稳定实现替换,结合网上的一些例子,加以优化和拓展,特此写一个完整版本的Demo供大家拿来直接...
总之,Android中的WebView加载本地图片并自适应布局大小,需要结合HTML、CSS、JavaScript以及Java代码进行综合运用。理解WebView的工作原理和配置选项,以及合理的图片尺寸控制和性能优化,都是实现这一功能的关键点...
然而,对于复杂的网页,特别是那些包含大量图片的页面,优化图片的加载和显示至关重要。本篇将详细介绍如何在Android的WebView中实现图片缓存,替换加载前的默认图片样式,并实现图片点击事件。 一、图片缓存 1. ...
本文将详细介绍如何在WebView加载失败时,自定义错误页面。 首先,我们来理解WebView的基本使用。在Android Studio中创建一个新的Activity,然后在布局XML文件中添加一个WebView组件: ```xml <WebView android:...
本文将深入探讨如何使用WebView加载网页以及本地图片,并解决缓存问题。 一、WebView的基本使用 1. 初始化WebView:首先,我们需要在布局XML文件中添加WebView组件,并在对应的Activity或Fragment中找到该组件。...
本示例“android中webview加载本地页面,并处理js事件”着重讲解如何利用`WebView`加载本地HTML页面,并通过JavaScript Interface与Java代码进行交互,同时在HTML中动态生成组件如`button`。 1. **WebView基本使用**...
通过懒加载,我们可以先加载页面的基本结构,然后在用户滚动到相应位置时再加载图片或其他非必需资源,从而提高初始加载速度。 在Android 8.0(API级别26)之前,原生的WebView性能可能无法满足需求,特别是在处理...
这个“Android webview加载网页.zip”文件可能包含了一个示例项目或者教程,帮助开发者理解如何在Android应用中有效地使用WebView。 WebView的使用涉及到以下几个关键知识点: 1. **WebView组件引入**:在...
这样,当WebView加载网页失败时,就会显示我们自定义的错误页面,而不是默认的简陋提示。 除此之外,还可以考虑增加重试功能。比如,当用户点击错误页面上的按钮时,可以重新加载网页: ```java webView....
在 Android 中,当 WebView 加载 HTTP 请求的网页时,如果网页中有一张图片,并且该图片的地址是 HTTPS 请求的,这时候 WebView 加载的网页,图片是不显示的。这种情况被称为“Mixed Content”(混合内容),是由于 ...
然而,有时我们可能会遇到“替换WebView加载网页失败”的问题,这通常是由于多种原因引起的。以下是一些可能导致这个问题的关键知识点以及解决策略。 1. **初始化问题**:首先,确保在使用WebView之前正确地初始化...
这篇博文“使用webview加载本地html页面,并处理html页面中的javascript事件”探讨了如何利用WebView来加载本地HTML文件,并且如何处理HTML页面中的JavaScript事件,这对于创建混合型应用或实现特定功能(如在原生...
以上就是Android中使用WebView加载HTML并引用本地资源的基本步骤。通过结合HTML、CSS和JavaScript,你可以构建出丰富的交互式应用界面,同时利用本地资源提升性能和用户体验。记得在实际项目中,还要考虑安全性和...
当网页中包含图片时,Webview会自动处理图片的加载。但是,如果图片来源于本地,我们可以通过`loadDataWithBaseURL()`或`loadData()`方法加载HTML字符串来显示图片。例如: ```java String ...
在安卓应用开发中,Webview ...总之,使用Webview加载单页面应用需要关注多个方面,包括基本的加载操作、交互设计、安全性以及性能优化。理解并掌握这些要点,能帮助我们构建更加高效、安全且用户体验良好的安卓应用。
当我们需要对WebView加载的页面进行自定义样式,比如更改字体,可能会遇到一些挑战,因为WebView本质上是加载HTML、CSS和JavaScript代码,而这些内容的样式通常在网页本身中定义。然而,我们可以通过一些方法来实现...
最近公司某项功能需要WebView加载H5的Video,搜索很多资料后发现很多问题,都是关键代码片段,因为每个项目每个人产生的问题不同,Video在webview中加载不出来原因很多,可能是客户端少了参数,也可能是前端出了问题...
通过学习和实践这个Demo,你可以了解到如何在Windows环境中使用QtWebView加载在线地图服务,同时掌握Qt的网络编程和Web交互能力。此外,你还可以进一步探索QtWebKit的高级特性,如本地存储、Web Inspector等,以提升...
在实际开发中,有时我们需要获取WebView当前加载的URL以及用户访问的前一个页面的URL,以便进行更复杂的功能实现,比如导航控制、历史记录管理和数据追踪。下面将详细解释如何在Android中实现这一需求。 首先,我们...