Android中的WebView达到一种web端可以运行app端代码的高度
2017-08-15 11:35
483 查看
WebView代码展示演示
//直接上来展示我的类 public class WebViewActivity<T> extends Activity implements View.OnClickListener { //网页Url地址 eg: https://www.bing.com/az/hprichbg/rb/QuakingAspens_ZH-CN11296287476_1920x1080.jpg protected String mUrl; //控件WebView protected WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置布局 setContentView(R.layout.activity_web_view); //获取bundle数据,将Url获取出来 Bundle bundle = getIntent().getExtras(); if (bundle != null) { mUrl = bundle.getString("Url"); if (mUrl != null) { Log.i("Url", mUrl); } } initView(); } private void initView() { //获取WebView mWebView = (WebView) findViewById(R.id.activity_web_view_webview); //WebChromeClient可以显示js的效果,主要辅助WebView处理JavaScript对话框,加载进度,上传文件等 mWebView.setWebChromeClient(new WebChromeClient()); //设置可以支持缩放,但是只设置此属性并不能实现手动缩放,在某些版本的手机上也只是能实现点击缩放 mWebView.getSettings().setSupportZoom(true); //设置使用默认的缩放控制器,默认是false mWebView.getSettings().setBuiltInZoomControls(false); //自适应屏幕,其实这个属性并不推荐,也是Google放弃的一个属性。此属性用来控制页面的布局,有三个类型: //SINGLE_COLUMN:把所有内容放大到webview等宽的一列中。 //NORMAL:正常显示不做任何渲染。 //NARROW_COLUMNS:可能的话 4000 让所有列的宽度不超过屏幕宽度。 mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); //设置默认加载的可视范围是大视野范围,此属性为true表示用尽可能大的视野展示页面,一般和setUseWideViewPort搭配使用。当然大视野显示的字都很小。 mWebView.getSettings().setLoadWithOverviewMode(true); //不显示默认的+/-缩放控制View, 默认是true mWebView.getSettings().setDisplayZoomControls(false); //支持 H5 的session storage和local storage mWebView.getSettings().setDomStorageEnabled(true); //支持javascript读,写db mWebView.getSettings().setDatabaseEnabled(true); //设置js创建的db文件的路径, Api 19以后废弃,直接有webview管理 mWebView.getSettings().setDatabasePath(this.getApplicationContext().getCacheDir().getAbsolutePath()); // 启用地理定位 mWebView.getSettings().setGeolocationEnabled(true); //设置是否阻止加载网络图片,默认是`false`,如果设置为`true`,那么网络图片将不会加载.(可以先设置为true,然后再设置为false,来加快页面加载速度) mWebView.getSettings().setBlockNetworkImage(false); //设置使用宽的Viewpoint,默认是false //Android browser以及chrome for Android的设置是`true` //而WebView的默认设置是`false` //如果设置为`true`,那么网页的可用宽度为`980px`,并且可以通过 meta data来设置 //如果设置为`false`,那么可用区域和WebView的显示区域有关. mWebView.getSettings().setUseWideViewPort(true); //设置支持javascript,默认是false mWebViewDisplay.getSettings().setJavaScriptEnabled(true); //通过下面定义接口中的方法,如果涉及到一些ui界面上的处理和操作的话,需要在主线程中进行 mWebViewDisplay.addJavascriptInterface(new WebApp(), "WebApp"); // 兼容webview加载https与http混合页面时5.0以下系统图片加载不出来的问题 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mWebViewDisplay.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } mWebViewDisplay.setWebViewClient(new WebViewClient() { //在网页上的所有加载都经过这个方法,这个函数我们可以做很多操作。比如获取url,查看url.contains(“add”),进行添加操作 @Override public boolean shouldOverrideUrlLoading(WebView view, final String url) { return true; } //开始载入页面时调用的,我们可以设定一个loading的页面,告诉用户程序在等待网络响应。 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } //onPageFinished(WebView view, String url) //在页面加载结束时调用, 我们可以关闭loading 条,切换程序动作。 @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } //报告错误信息 @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { } //让webview处理https请求。 @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { } }); //如果mUrl不为空,则WebView加载网页 if (!TextUtils.isEmpty(mUrl)) { mWebView.loadUrl(mUrl); } } /** * H5通过调用back方法,就实现了返回上个Activity * * H5通过调用getVersionCode方法,就可以获取application的版本号 */ public class WebApp { //H5返回按钮调用本地Activity的finish方法,结束Activity @JavascriptInterface public void back() { finish(); } //获取Application的版本号 @JavascriptInterface public void getVersionCode() { Log.e("webApp","getVersionCode"); PackageUtils.getVersionCode(mContext); } } }
最后当然有福利了,大家可以关注一下Android小神的简书,当然怎样获取到就看你的技术了!反正我是写了,自己找
相关文章推荐
- android中利用webview调用网页上的js代码和注意事项
- android webview显示HTML代码
- Android WebView中的JavaScript代码使用
- Android WebView中的JavaScript代码使用
- Android中WebView载入本地HTML代码并实现交互
- Android的webView中获得Html代码
- Android WebView学习,创建步骤并附代码(Handler、线程、WebView结合)
- Android:如何在java代码中覆盖webview中的javascript事件
- Android WebView中的JavaScript和java代码的交互
- 为何android的webview运行不了javascript?
- Android的WebView通过JS调用java代码
- android:如何在java代码中覆盖webview中的javascript事件
- 使用Android的WebView控件调用本地代码
- Android WebView中的JavaScript代码使用
- android webView中的html页面通过javascript访问java代码
- Android WebView代码高亮
- 理解Android Web Apps的运行机制,实现简单的包含Web View的应用程序
- Android WebView中的JavaScript代码使用
- 用几十行代码写一个可以在PC Web,PC桌面,安卓,iOS上运行的程序
- android webview 简单浏览器实现代码