前言
記得第一次用webview的時候,就會個loadUrl,最近想著自己寫個簡單瀏覽器玩玩,發現了一些問題,于是寫一篇文章,文章分兩大類,一類為使用,另一類為簡單問題解決,(老規矩最后有原始碼)
廢話不多說,下面開始
文章目錄
- 前言
- 前言
- 一、webview的簡單使用
- 1.load網址
- 2.設定一些屬性
- 3.寫一個監聽
- 4.回傳上一次瀏覽的頁面
- 二、遇到的一些問題
- 1.ERR_CLEARTEXT_NOT_PERMITTED
- 2.便頁面支持縮放
- 3.自適應螢屏
- 三、原始碼
- 總結
前言
于 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
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".WebActivity">
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
總結
希望對您有所幫助
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/239541.html
標籤:其他
下一篇:安卓使用服務完成音樂播放器
