簡(jiǎn)單的三行代碼既可以實(shí)現(xiàn)
private String url="http://2014.qq.com";
private WebView webView;
private ProgressDialog dialog;
Uri uri=Uri.EMPTY.parse(url);
Intent i=new Intent(Intent.ACTION_VIEW,uri);
startActivity(i);
我們實(shí)現(xiàn)一個(gè)請(qǐng)求服務(wù)器上的頁(yè)面操作步驟
private void init(){
webView=(WebView)findViewById(R.id.webview);
webView.loadUrl(url);//加載頁(yè)面路徑
如果說(shuō)需要加載后臺(tái)服務(wù)器的路徑需要獲取(有配置文件)
Properties properties = readConf.getProperties(getActivity());
serverUrl = properties.getProperty("serverUrl");
reRefresh()
//覆蓋webview默認(rèn)通過(guò)第三方或者瀏覽器打開第三方的行為吉嚣,是的網(wǎng)頁(yè)在webview中打開
webview.setWebViewClient(webClient); //設(shè)置Web視圖
//啟用支持javascript
setUpView()
//加載頁(yè)面優(yōu)先使用加載緩存頁(yè)面 其次再?gòu)木W(wǎng)路獲取
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//判斷頁(yè)面加載過(guò)程
setViewProgress()
}
--------------------------下面都是封裝的方法提供調(diào)用------------------------------------------------------
//請(qǐng)求頁(yè)面路徑:
private void reRefresh() {
OFZAPLog.info(LOG_TAG, "reRefresh");
webview.loadUrl(serverUrl + "/mess/message.html");
//webview.loadUrl("https://www.baidu.com");
webview.reload();
}
WebViewClient webClient = new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
//true的時(shí)候控制網(wǎng)也在webview中打開朗儒,false在第三方瀏覽器打開
view.loadUrl(url);
return true;
}
//WebViewClient幫助webview去處理一些頁(yè)面控制宏娄,和請(qǐng)求通知
@TargetApi(android.os.Build.VERSION_CODES.M)
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
super.onReceivedHttpError(view, request, errorResponse);
// 這個(gè)方法在6.0才出現(xiàn)
int statusCode = errorResponse.getStatusCode();
System.out.println("onReceivedHttpError code = " + statusCode);
if (404 == statusCode || 500 == statusCode) {
if (isRefresh) {
view.loadUrl("file:///android_asset/error.html?info=頁(yè)面錯(cuò)誤渐行,請(qǐng)稍后再試");
isRefresh = false;
} else {
webview.reload();
isRefresh = true;
}
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);//處理網(wǎng)頁(yè)加載失敗時(shí)
view.setVisibility( View.GONE );
view.loadUrl("file:///android_asset/error.html?info=網(wǎng)絡(luò)連接錯(cuò)誤潮秘,請(qǐng)稍后再試");
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
}
//判斷頁(yè)面加載過(guò)程
private void setViewProgress() {
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
//newProgress1--100的整數(shù)
if (newProgress==100){
//加載完畢頁(yè)面 關(guān)閉progressDialog
closeDialog();
}else {
//網(wǎng)頁(yè)正在加載 打開progressDialog
openDialog(newProgress);
}
}
private void openDialog(int newProgress) {
if (dialog==null){
dialog=new ProgressDialog(WevViewActivity.this);
dialog.setTitle("正在加載");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(newProgress);
dialog.show();
}else {
dialog.setProgress(newProgress);
}
}
private void closeDialog() {
if (dialog!=null&& dialog.isShowing()){
dialog.dismiss();
dialog=null;
}
}
});
}
//啟用支持javascript
@SuppressLint("SetJavaScriptEnabled")
private void setUpView() {
//加載需要顯示的網(wǎng)頁(yè)
WebSettings mWebSettings = webview.getSettings();
mWebSettings.setJavaScriptEnabled(true); //允許加載javascript
mWebSettings.setDomStorageEnabled(true);
webview.setWebViewClient(webClient); //設(shè)置Web視圖
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
//Toast.makeText(this,webView.getUrl(),Toast.LENGTH_SHORT).show();
if(webView.canGoBack()){
webView.goBack();//返回上一頁(yè)
return true;
}
else {
// 退出
System.exit(0);
}
}
return super.onKeyDown(keyCode, event);
}
webView
image.png