APP開發實戰137-WebView功能設計

36.9 WebView功能設計

在使用WebView控件時,除了設置是否支持js、緩存大小、緩存模式、文字編碼類型、圖片縮放和網頁縮放等外,還需重寫許多函數,具體如下:

mWebView.setWebViewClient(newWebViewClient() {

@Override

public booleanshouldOverrideUrlLoading(WebView view, String url) {

if(url.startsWith("http:") || url.startsWith("https:") ) {

return false;

}

//網頁中如果有tel:、mailto:這樣的鏈接,需要單獨處理??????????????? taskUrl = url;

urlTask();

return true;

}

//在以下幾個函數中,需要關閉加載提示框

@Override

public void onPageFinished(WebViewview, String url) {

super.onPageFinished(view,url);

UIHelper.dismiss(dialogFragment);

}

@Override

public void onReceivedError(WebViewview, int errorCode, String description, String failingUrl) {

super.onReceivedError(view,errorCode, description, failingUrl);

UIHelper.dismiss(dialogFragment);

//顯示提示用戶遇到錯誤,需要重新加載的網頁

mWebView.loadUrl("file:///android_asset/error.html");

}

@Override

public voidonReceivedHttpError(WebView view, WebResourceRequest request,WebResourceResponse errorResponse) {

super.onReceivedHttpError(view,request, errorResponse);

UIHelper.dismiss(dialogFragment);

//顯示提示用戶遇到錯誤,需要重新加載的網頁

mWebView.loadUrl("file:///android_asset/error.html");

}

});

}

//返回鍵處理

public boolean onKeyDown(int keyCode,KeyEvent event) {

if ((keyCode == KeyEvent.KEYCODE_BACK)&&

mWebView.canGoBack()){

mWebView.goBack(); //goBack()表示返回WebView的上一頁面

return true;

}

return super.onKeyDown(keyCode, event);

}

publicvoid urlTask() {

if(taskUrl.startsWith("tel:")) {

//Android6.0系統需要動態申請權限

if(EasyPermissions.hasPermissions(this,

Manifest.permission.CALL_PHONE)){

// Have permission, do thething!

Intent intent = newIntent(Intent.ACTION_VIEW,

Uri.parse(taskUrl));

startActivity(intent);

} else {

// Ask for one permission

EasyPermissions.requestPermissions(this,

getString(R.string.rationale_call_phone),

RC_TEL_PERM,

Manifest.permission.CALL_PHONE);

}

} else {

Intent intent = newIntent(Intent.ACTION_VIEW,

Uri.parse(taskUrl));

startActivity(intent);

}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容