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加载网页时,遇到一个问题,自带的webview错误页面不美观,于是自定义一个view提示用户,网上很多方法,也不稳定实现替换,结合网上的一些例子,加以优化和拓展,特此写一个完整版本的Demo供大家拿来直接...
webview 监听页面显示事件,很好用
Android webview 加载网页以及本地资源以及SD资源demo,以及加载缓存资源
webview加载失败,自定义错误页面处理
demo中介绍使用webview加载本地页面,并在java代码中提供js调用事件,在html中动态生成组件button
实现webview加载时显示进度条,类似微信公众号文章加载。
替换WebView加载网页失败时的页面
Android实现WebView懒加载,提前进行页面JS资源加载。减少WebView加载时间及加载资源问题。Android 8.0以前需要引入X5内核,Android 8.0以后无特殊要求。
实现Android中WebView图片的缓存,并且实现如何替换WebView中默认图片以及如何实现图片的点击。
替换WebView加载网页失败
demo webview修改页面字体
android webview加载gif图片,控件显示gif图片、加载网络图片,不卡,流畅,是开发者使用的好demo
webview显示图片并下载
android webView加载html 并引用本地资源(图片、字体库)
android Webview加载本地图片,自适应布局大小
这时我们利用启动页或引导页或中间的广告页的时间来预加载webview,利用View.gone,View.visible来实现控件类的隐藏与显示,这样在启动后得到的主页就是一个已经加载好的页面了。此例中加载新浪这样的比较大的网站,...
Android webview加载网页
在开发中,有时候我们会在app中使用WebView加载一个web页面。这样可以适当减轻我们开发的难度。但是弊端是WebView中切换html,没有像原生页面的切换效果。这里我们就利用动画,以及 获取网页的快照来实现android ...
封装WebView加载中和错误页面
对于Android开发人员来说,或多或少都会遇到使用webView去加载一个网页链接也就是说去加载网页的这种情况。这不,小编本人就是在做使用webview去加载一个网页链接的功能,但是发现在请求网页的时候,如果网速快的话...