新版Outlook将增四大功能 推Android版客户端(Outlook主要功能)
842
2022-05-30
前言
于 Android P (9.0)限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉,所以如果访问没有https协议的网站默认不不可以访问的。
提示:以下是本篇文章正文内容,下面案例可供参考
一、webview的简单使用
1.load网址
//找到控件 web_view = (WebView) findViewById(R.id.web_view); //加载网页 web_view.loadUrl(weburl);
如果你是真机调试,且手机系统比较高的话,应该会报错:网页无法加载,应为:net :ERR_CLEARTEXT_NOT_PERMITTED
解决方式于第二个某块
2.设置一些属性
web_view = (WebView) findViewById(R.id.web_view); WebSettings webSettings = web_view.getSettings(); // 让WebView能够执行javaScript webSettings.setJavaScriptEnabled(true); // 让JavaScript可以自动打开windows webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //是否允许访问文件 webSettings.setAllowFileAccess(true); // 设置缓存 webSettings.setAppCacheEnabled(true); // 设置缓存模式,一共有四种模式 webSettings.setCacheMode(webSettings.LOAD_CACHE_ELSE_NETWORK); // 支持缩放(适配到当前屏幕) webSettings.setSupportZoom(true); // 将图片调整到合适的大小 webSettings.setUseWideViewPort(true); // 支持内容重新布局 webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // 设置可以被显示的屏幕控制 webSettings.setDisplayZoomControls(true); // 设置默认字体大小 webSettings.setDefaultFontSize(12); web_view.loadUrl(weburl);
这里就只介绍本例子用的一些属性了,如需了解更多,请前往Android中文文档
3.写一个监听
web_view.setWebViewClient(new WebViewClient() { //当新的 url 即将被加载的时候---->用户点击了 Webview 内容里面的一个超链接的时候会触发该方法的调用 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } //在页面加载开始时调用。 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } //在页面加载结束时调用。 @Override public void onPageFinished(WebView view, String url) { weburl=url; super.onPageFinished(view, url); } });
这里主要介绍三个方法
4.返回上一次浏览的页面
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { if (web_view.canGoBack()) { web_view.goBack(); return true; } else { finish(); return true; } } return false; }
二、遇到的一些问题
1.ERR_CLEARTEXT_NOT_PERMITTED
原因:于 Android P (9.0)限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉,所以如果访问没有https协议的网站默认不不可以访问的。
解决:
在AndroidManifest.xml文件的application标签中添加
android:usesCleartextTraffic="true"
2.便页面支持缩放
WebSettings webSettings =web_view.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setBuiltInZoomControls(true); webSettings.setSupportZoom(true);
3.自适应屏幕
WebSettings webSettings =web_view.getSettings(); webSettings.setUseWideViewPort(true);//设置此属性,可任意比例缩放 webSettings.setLoadWithOverviewMode(true);
三、源码
WebActivity.java
public class WebActivity extends Activity { private WebView web_view; private String weburl = "http://www.jimengjia.com/"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web); initView(); webViewClient(); webViewSetting(); } private void initView() { web_view = (WebView) findViewById(R.id.web_view); } private void webViewClient(){ web_view.setWebViewClient(new WebViewClient() { //当新的 url 即将被加载的时候---->用户点击了 Webview 内容里面的一个超链接的时候会触发该方法的调用 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } //在页面加载开始时调用。 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } //在页面加载结束时调用。 @Override public void onPageFinished(WebView view, String url) { weburl=url; super.onPageFinished(view, url); } }); } private void webViewSetting(){ WebSettings webSettings = web_view.getSettings(); // 让WebView能够执行javaScript webSettings.setJavaScriptEnabled(true); //是否允许访问文件 webSettings.setAllowFileAccess(true); // 让JavaScript可以自动打开windows webSettings.setJavaScriptCanOpenWindowsAutomatically(true); // 设置缓存 webSettings.setAppCacheEnabled(true); // 设置缓存模式,一共有四种模式 webSettings.setCacheMode(webSettings.LOAD_CACHE_ELSE_NETWORK); // 支持缩放(适配到当前屏幕) webSettings.setSupportZoom(true); // 将图片调整到合适的大小 webSettings.setUseWideViewPort(true); // 支持内容重新布局 webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // 设置可以被显示的屏幕控制 webSettings.setDisplayZoomControls(true); // 设置默认字体大小 webSettings.setDefaultFontSize(12); web_view.loadUrl(weburl); } //返回上一次浏览的页面 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { if (web_view.canGoBack()) { web_view.goBack(); return true; } else { finish(); return true; } } return false; } }
activity_web.xml
总结
希望对您有所帮助
Android WebView
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。