APP開發(fā)實(shí)戰(zhàn)137-WebView功能設(shè)計(jì)

36.9 WebView功能設(shè)計(jì)

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

mWebView.setWebViewClient(newWebViewClient() {

@Override

public booleanshouldOverrideUrlLoading(WebView view, String url) {

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

return false;

}

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

urlTask();

return true;

}

//在以下幾個(gè)函數(shù)中,需要關(guān)閉加載提示框

@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);

//顯示提示用戶遇到錯(cuò)誤,需要重新加載的網(wǎng)頁

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

}

@Override

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

super.onReceivedHttpError(view,request, errorResponse);

UIHelper.dismiss(dialogFragment);

//顯示提示用戶遇到錯(cuò)誤,需要重新加載的網(wǎng)頁

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系統(tǒng)需要?jiǎng)討B(tài)申請權(quán)限

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);

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容