List of usage examples for android.webkit WebSettings setRenderPriority
@Deprecated public abstract void setRenderPriority(RenderPriority priority);
From source file:com.pursuer.reader.easyrss.VerticalSingleItemView.java
@SuppressLint("SetJavaScriptEnabled") public void loadContent() { final WebSettings settings = webView.getSettings(); settings.setDefaultTextEncodingName(HTTP.UTF_8); settings.setJavaScriptEnabled(true); settings.setDefaultFontSize(fontSize); settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); settings.setRenderPriority(RenderPriority.LOW); final StringBuffer content = new StringBuffer(); if (item.getState().isCached()) { settings.setBlockNetworkImage(true); content.append(DataUtils.readFromFile(new File(item.getFullContentStoragePath()))); } else {//from w w w.ja v a2 s. c o m final SettingImageFetching sImgFetch = new SettingImageFetching(dataMgr); if (NetworkUtils.checkImageFetchingNetworkStatus(context, sImgFetch.getData())) { settings.setBlockNetworkImage(false); content.append(DataUtils.readFromFile(new File(item.getOriginalContentStoragePath()))); } else { settings.setBlockNetworkImage(true); content.append(DataUtils.readFromFile(new File(item.getStrippedContentStoragePath()))); } } content.append(DataUtils.DEFAULT_JS); content.append( theme == SettingTheme.THEME_NORMAL ? DataUtils.DEFAULT_NORMAL_CSS : DataUtils.DEFAULT_DARK_CSS); webView.loadDataWithBaseURL("file://" + item.getStoragePath() + "/", content.toString(), null, "utf-8", null); }
From source file:org.openqa.selendroid.server.model.SelendroidWebDriver.java
private void configureWebView(final WebView view) { ServerInstrumentation.getInstance().runOnUiThread(new Runnable() { @Override//from w w w . ja va2 s . c om public void run() { view.clearCache(true); view.clearFormData(); view.clearHistory(); view.setFocusable(true); view.setFocusableInTouchMode(true); view.setNetworkAvailable(true); view.setWebChromeClient(new MyWebChromeClient()); WebSettings settings = view.getSettings(); settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setSupportMultipleWindows(true); settings.setBuiltInZoomControls(true); settings.setJavaScriptEnabled(true); settings.setAppCacheEnabled(true); settings.setAppCacheMaxSize(10 * 1024 * 1024); settings.setAppCachePath(""); settings.setDatabaseEnabled(true); settings.setDomStorageEnabled(true); settings.setGeolocationEnabled(true); settings.setSaveFormData(false); settings.setSavePassword(false); settings.setRenderPriority(WebSettings.RenderPriority.HIGH); // Flash settings settings.setPluginState(WebSettings.PluginState.ON); // Geo location settings settings.setGeolocationEnabled(true); settings.setGeolocationDatabasePath("/data/data/selendroid"); } }); }
From source file:io.selendroid.server.model.SelendroidWebDriver.java
private void configureWebView(final WebView view) { ServerInstrumentation.getInstance().getCurrentActivity().runOnUiThread(new Runnable() { @Override/*from ww w . ja v a 2 s. c o m*/ public void run() { try { view.clearCache(true); view.clearFormData(); view.clearHistory(); view.setFocusable(true); view.setFocusableInTouchMode(true); view.setNetworkAvailable(true); // need to check the class name rather than checking instanceof // since when it is not an instanceof, it likely means the app under test // does not contain the Cordova project and this will cause a RuntimeException if (view.getClass().getSimpleName().equalsIgnoreCase("CordovaWebView")) { CordovaWebView webview = (CordovaWebView) view; CordovaInterface ci = null; chromeClient = new ExtendedCordovaChromeClient(null, webview); } else { chromeClient = new SelendroidWebChromeClient(); } view.setWebChromeClient(chromeClient); WebSettings settings = view.getSettings(); settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setSupportMultipleWindows(true); settings.setBuiltInZoomControls(true); settings.setJavaScriptEnabled(true); settings.setAppCacheEnabled(true); settings.setAppCacheMaxSize(10 * 1024 * 1024); settings.setAppCachePath(""); settings.setDatabaseEnabled(true); settings.setDomStorageEnabled(true); settings.setGeolocationEnabled(true); settings.setSaveFormData(false); settings.setSavePassword(false); settings.setRenderPriority(WebSettings.RenderPriority.HIGH); // Flash settings settings.setPluginState(WebSettings.PluginState.ON); // Geo location settings settings.setGeolocationEnabled(true); settings.setGeolocationDatabasePath("/data/data/selendroid"); } catch (Exception e) { SelendroidLogger.error("Error configuring web view", e); } } }); }
From source file:RhodesService.java
@Override public void onCreate() { Logger.D(TAG, "onCreate"); sInstance = this; Context context = this; mNM = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); LocalFileProvider.revokeUriPermissions(this); Logger.I("Rhodes", "Loading..."); RhodesApplication.create();/* w ww . j ava 2 s . c om*/ RhodesActivity ra = RhodesActivity.getInstance(); if (ra != null) { // Show splash screen only if we have active activity SplashScreen splashScreen = ra.getSplashScreen(); splashScreen.start(); // Increase WebView rendering priority WebView w = new WebView(context); WebSettings webSettings = w.getSettings(); webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH); } initForegroundServiceApi(); // Register custom uri handlers here mUriHandlers.addElement(new ExternalHttpHandler(context)); mUriHandlers.addElement(new LocalFileHandler(context)); mUriHandlers.addElement(new MailUriHandler(context)); mUriHandlers.addElement(new TelUriHandler(context)); mUriHandlers.addElement(new SmsUriHandler(context)); mUriHandlers.addElement(new VideoUriHandler(context)); mConnectionChangeReceiver = new ConnectionChangeReceiver(); IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(mConnectionChangeReceiver, filter); RhodesApplication.start(); if (BaseActivity.getActivitiesCount() > 0) handleAppActivation(); }
From source file:com.example.administrator.mywebviewdrawsign.SysWebView.java
/** * Initialize webview.//w ww . j a va2 s .co m */ @SuppressLint({ "NewApi", "SetJavaScriptEnabled" }) private void setup() { this.setInitialScale(0); this.setVerticalScrollBarEnabled(true); this.setHorizontalScrollBarEnabled(true); this.requestFocusFromTouch(); // Enable JavaScript WebSettings settings = this.getSettings(); settings.setBuiltInZoomControls(false);// ?? settings.setUseWideViewPort(false); settings.setLoadWithOverviewMode(true); settings.setJavaScriptEnabled(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL); settings.setAllowFileAccess(true); settings.setAppCacheMaxSize(1024 * 1024 * 32); settings.setAppCachePath(mContext.getFilesDir().getPath() + "/cache"); settings.setAppCacheEnabled(true); settings.setCacheMode(WebSettings.LOAD_DEFAULT); // Set Cache Mode: LOAD_NO_CACHE is noly for debug //settings.setCacheMode(WebSettings.LOAD_NO_CACHE); //enablePageCache(settings,5); //enableWorkers(settings); // Enable database settings.setDatabaseEnabled(true); String databasePath = mContext.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath(); settings.setDatabasePath(databasePath); // Enable DOM storage settings.setDomStorageEnabled(true); // Enable built-in geolocation settings.setGeolocationEnabled(true); // Improve render performance settings.setRenderPriority(WebSettings.RenderPriority.HIGH); if (Build.VERSION.SDK_INT >= 21) { settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } }
From source file:com.creativtrendz.folio.ui.FolioWebViewScroll.java
@SuppressLint({ "SetJavaScriptEnabled" })
protected void init(Context context) {
if (context instanceof Activity) {
mActivity = new WeakReference<>((Activity) context);
}/*from www .j a v a2s.co m*/
mLanguageIso3 = getLanguageIso3();
setFocusable(true);
setFocusableInTouchMode(true);
setSaveEnabled(true);
final String filesDir = context.getFilesDir().getPath();
final String databaseDir = filesDir.substring(0, filesDir.lastIndexOf("/")) + DATABASES_SUB_FOLDER;
final WebSettings webSettings = getSettings();
webSettings.setAllowFileAccess(false);
setAllowAccessFromFileUrls(webSettings, false);
webSettings.setBuiltInZoomControls(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
if (Build.VERSION.SDK_INT < 18) {
webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
}
webSettings.setDatabaseEnabled(true);
if (Build.VERSION.SDK_INT < 19) {
webSettings.setDatabasePath(databaseDir);
}
setMixedContentAllowed(webSettings, true);
setThirdPartyCookiesEnabled(true);
super.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if (!hasError()) {
if (mListener != null) {
mListener.onPageStarted(url, favicon);
}
}
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onPageStarted(view, url, favicon);
}
}
@Override
public void onPageFinished(WebView view, String url) {
if (!hasError()) {
if (mListener != null) {
mListener.onPageFinished(url);
}
}
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onPageFinished(view, url);
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
setLastError();
if (mListener != null) {
mListener.onPageError(errorCode, description, failingUrl);
}
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onReceivedError(view, errorCode, description, failingUrl);
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (isHostnameAllowed(url)) {
return mCustomWebViewClient != null && mCustomWebViewClient.shouldOverrideUrlLoading(view, url);
} else {
if (mListener != null) {
mListener.onExternalPageRequest(url);
}
return true;
}
}
@Override
public void onLoadResource(WebView view, String url) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onLoadResource(view, url);
} else {
super.onLoadResource(view, url);
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
if (Build.VERSION.SDK_INT >= 11) {
if (mCustomWebViewClient != null) {
return mCustomWebViewClient.shouldInterceptRequest(view, url);
} else {
return super.shouldInterceptRequest(view, url);
}
} else {
return null;
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
if (Build.VERSION.SDK_INT >= 21) {
if (mCustomWebViewClient != null) {
return mCustomWebViewClient.shouldInterceptRequest(view, request);
} else {
return super.shouldInterceptRequest(view, request);
}
} else {
return null;
}
}
@Override
public void onFormResubmission(WebView view, Message dontResend, Message resend) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onFormResubmission(view, dontResend, resend);
} else {
super.onFormResubmission(view, dontResend, resend);
}
}
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.doUpdateVisitedHistory(view, url, isReload);
} else {
super.doUpdateVisitedHistory(view, url, isReload);
}
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onReceivedSslError(view, handler, error);
} else {
super.onReceivedSslError(view, handler, error);
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public void onReceivedClientCertRequest(WebView view, ClientCertRequest request) {
if (Build.VERSION.SDK_INT >= 21) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onReceivedClientCertRequest(view, request);
} else {
super.onReceivedClientCertRequest(view, request);
}
}
}
@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host,
String realm) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onReceivedHttpAuthRequest(view, handler, host, realm);
} else {
super.onReceivedHttpAuthRequest(view, handler, host, realm);
}
}
@Override
public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
if (mCustomWebViewClient != null) {
return mCustomWebViewClient.shouldOverrideKeyEvent(view, event);
} else {
return super.shouldOverrideKeyEvent(view, event);
}
}
@Override
public void onUnhandledKeyEvent(WebView view, KeyEvent event) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onUnhandledKeyEvent(view, event);
} else {
super.onUnhandledKeyEvent(view, event);
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public void onUnhandledInputEvent(WebView view, InputEvent event) {
if (Build.VERSION.SDK_INT >= 21) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onUnhandledInputEvent(view, event);
} else {
super.onUnhandledInputEvent(view, event);
}
}
}
@Override
public void onScaleChanged(WebView view, float oldScale, float newScale) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onScaleChanged(view, oldScale, newScale);
} else {
super.onScaleChanged(view, oldScale, newScale);
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public void onReceivedLoginRequest(WebView view, String realm, String account, String args) {
if (Build.VERSION.SDK_INT >= 12) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onReceivedLoginRequest(view, realm, account, args);
} else {
super.onReceivedLoginRequest(view, realm, account, args);
}
}
}
});
super.setWebChromeClient(new WebChromeClient() {
// file upload callback (Android 2.2 (API level 8) -- Android 2.3 (API level 10)) (hidden method)
@SuppressWarnings("unused")
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
openFileChooser(uploadMsg, null);
}
// file upload callback (Android 3.0 (API level 11) -- Android 4.0 (API level 15)) (hidden method)
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
openFileChooser(uploadMsg, acceptType, null);
}
// file upload callback (Android 4.1 (API level 16) -- Android 4.3 (API level 18)) (hidden method)
@SuppressWarnings("unused")
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
openFileInput(uploadMsg, null);
}
// file upload callback (Android 5.0 (API level 21) -- current) (public method)
@SuppressWarnings("all")
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback,
WebChromeClient.FileChooserParams fileChooserParams) {
openFileInput(null, filePathCallback);
return true;
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onProgressChanged(view, newProgress);
} else {
super.onProgressChanged(view, newProgress);
}
}
@Override
public void onReceivedTitle(WebView view, String title) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onReceivedTitle(view, title);
} else {
super.onReceivedTitle(view, title);
}
}
@Override
public void onReceivedIcon(WebView view, Bitmap icon) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onReceivedIcon(view, icon);
} else {
super.onReceivedIcon(view, icon);
}
}
@Override
public void onReceivedTouchIconUrl(WebView view, String url, boolean precomposed) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onReceivedTouchIconUrl(view, url, precomposed);
} else {
super.onReceivedTouchIconUrl(view, url, precomposed);
}
}
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onShowCustomView(view, callback);
} else {
super.onShowCustomView(view, callback);
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) {
if (Build.VERSION.SDK_INT >= 14) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onShowCustomView(view, requestedOrientation, callback);
} else {
super.onShowCustomView(view, requestedOrientation, callback);
}
}
}
@Override
public void onHideCustomView() {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onHideCustomView();
} else {
super.onHideCustomView();
}
}
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture,
Message resultMsg) {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onCreateWindow(view, isDialog, isUserGesture, resultMsg);
} else {
return super.onCreateWindow(view, isDialog, isUserGesture, resultMsg);
}
}
@Override
public void onRequestFocus(WebView view) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onRequestFocus(view);
} else {
super.onRequestFocus(view);
}
}
@Override
public void onCloseWindow(WebView window) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onCloseWindow(window);
} else {
super.onCloseWindow(window);
}
}
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onJsAlert(view, url, message, result);
} else {
return super.onJsAlert(view, url, message, result);
}
}
@Override
public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onJsConfirm(view, url, message, result);
} else {
return super.onJsConfirm(view, url, message, result);
}
}
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue,
JsPromptResult result) {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onJsPrompt(view, url, message, defaultValue, result);
} else {
return super.onJsPrompt(view, url, message, defaultValue, result);
}
}
@Override
public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result) {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onJsBeforeUnload(view, url, message, result);
} else {
return super.onJsBeforeUnload(view, url, message, result);
}
}
@Override
public void onGeolocationPermissionsShowPrompt(String origin, Callback callback) {
if (mGeolocationEnabled) {
callback.invoke(origin, true, false);
} else {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onGeolocationPermissionsShowPrompt(origin, callback);
} else {
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
}
}
@Override
public void onGeolocationPermissionsHidePrompt() {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onGeolocationPermissionsHidePrompt();
} else {
super.onGeolocationPermissionsHidePrompt();
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public void onPermissionRequest(PermissionRequest request) {
if (Build.VERSION.SDK_INT >= 21) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onPermissionRequest(request);
} else {
super.onPermissionRequest(request);
}
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public void onPermissionRequestCanceled(PermissionRequest request) {
if (Build.VERSION.SDK_INT >= 21) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onPermissionRequestCanceled(request);
} else {
super.onPermissionRequestCanceled(request);
}
}
}
@Override
public boolean onJsTimeout() {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onJsTimeout();
} else {
return super.onJsTimeout();
}
}
@Override
public void onConsoleMessage(String message, int lineNumber, String sourceID) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onConsoleMessage(message, lineNumber, sourceID);
} else {
super.onConsoleMessage(message, lineNumber, sourceID);
}
}
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onConsoleMessage(consoleMessage);
} else {
return super.onConsoleMessage(consoleMessage);
}
}
@Override
public Bitmap getDefaultVideoPoster() {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.getDefaultVideoPoster();
} else {
return super.getDefaultVideoPoster();
}
}
@Override
public View getVideoLoadingProgressView() {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.getVideoLoadingProgressView();
} else {
return super.getVideoLoadingProgressView();
}
}
@Override
public void getVisitedHistory(ValueCallback<String[]> callback) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.getVisitedHistory(callback);
} else {
super.getVisitedHistory(callback);
}
}
@Override
public void onExceededDatabaseQuota(String url, String databaseIdentifier, long quota,
long estimatedDatabaseSize, long totalQuota, QuotaUpdater quotaUpdater) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onExceededDatabaseQuota(url, databaseIdentifier, quota,
estimatedDatabaseSize, totalQuota, quotaUpdater);
} else {
super.onExceededDatabaseQuota(url, databaseIdentifier, quota, estimatedDatabaseSize, totalQuota,
quotaUpdater);
}
}
@Override
public void onReachedMaxAppCacheSize(long requiredStorage, long quota, QuotaUpdater quotaUpdater) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onReachedMaxAppCacheSize(requiredStorage, quota, quotaUpdater);
} else {
super.onReachedMaxAppCacheSize(requiredStorage, quota, quotaUpdater);
}
}
});
setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype,
long contentLength) {
if (mListener != null) {
mListener.onDownloadRequested(url, userAgent, contentDisposition, mimetype, contentLength);
}
}
});
}
From source file:com.slarker.tech.hi0734.view.widget.webview.AdvancedWebView.java
@SuppressLint({ "SetJavaScriptEnabled" })
protected void init(Context context) {
// in IDE's preview mode
if (isInEditMode()) {
// do not run the code from this method
return;/*from w w w. j a v a2 s . c o m*/
}
if (context instanceof Activity) {
mActivity = new WeakReference<Activity>((Activity) context);
}
mLanguageIso3 = getLanguageIso3();
setFocusable(true);
setFocusableInTouchMode(true);
setSaveEnabled(true);
final String filesDir = context.getFilesDir().getPath();
final String databaseDir = filesDir.substring(0, filesDir.lastIndexOf("/")) + DATABASES_SUB_FOLDER;
final WebSettings webSettings = getSettings();
webSettings.setAllowFileAccess(false);
setAllowAccessFromFileUrls(webSettings, false);
webSettings.setBuiltInZoomControls(false);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setUserAgentString(ApiClientHelper.getUserAgent((AppContext) x.app()) + "/isapp");
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
// Hide the zoom controls for HONEYCOMB+
webSettings.setDisplayZoomControls(false);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
if (Build.VERSION.SDK_INT < 18) {
webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
}
webSettings.setDatabaseEnabled(true);
if (Build.VERSION.SDK_INT < 19) {
webSettings.setDatabasePath(databaseDir);
}
setMixedContentAllowed(webSettings, true);
setThirdPartyCookiesEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
super.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if (!hasError()) {
if (mListener != null) {
mListener.onPageStarted(url, favicon);
}
}
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onPageStarted(view, url, favicon);
}
}
@Override
public void onPageFinished(WebView view, String url) {
if (!hasError()) {
if (mListener != null) {
mListener.onPageFinished(url);
}
}
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onPageFinished(view, url);
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
setLastError();
if (mListener != null) {
mListener.onPageError(errorCode, description, failingUrl);
}
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onReceivedError(view, errorCode, description, failingUrl);
}
}
@Override
public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
// if the hostname may not be accessed
if (!isHostnameAllowed(url)) {
// if a listener is available
if (mListener != null) {
// inform the listener about the request
mListener.onExternalPageRequest(url);
}
// cancel the original request
return true;
}
// if there is a user-specified handler available
if (mCustomWebViewClient != null) {
// if the user-specified handler asks to override the request
if (mCustomWebViewClient.shouldOverrideUrlLoading(view, url)) {
// cancel the original request
return true;
}
}
// route the request through the custom URL loading method
view.loadUrl(url);
// cancel the original request
return true;
}
@Override
public void onLoadResource(WebView view, String url) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onLoadResource(view, url);
} else {
super.onLoadResource(view, url);
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
if (Build.VERSION.SDK_INT >= 11) {
if (mCustomWebViewClient != null) {
return mCustomWebViewClient.shouldInterceptRequest(view, url);
} else {
return super.shouldInterceptRequest(view, url);
}
} else {
return null;
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
if (Build.VERSION.SDK_INT >= 21) {
if (mCustomWebViewClient != null) {
return mCustomWebViewClient.shouldInterceptRequest(view, request);
} else {
return super.shouldInterceptRequest(view, request);
}
} else {
return null;
}
}
@Override
public void onFormResubmission(WebView view, Message dontResend, Message resend) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onFormResubmission(view, dontResend, resend);
} else {
super.onFormResubmission(view, dontResend, resend);
}
}
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.doUpdateVisitedHistory(view, url, isReload);
} else {
super.doUpdateVisitedHistory(view, url, isReload);
}
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onReceivedSslError(view, handler, error);
} else {
super.onReceivedSslError(view, handler, error);
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public void onReceivedClientCertRequest(WebView view, ClientCertRequest request) {
if (Build.VERSION.SDK_INT >= 21) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onReceivedClientCertRequest(view, request);
} else {
super.onReceivedClientCertRequest(view, request);
}
}
}
@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host,
String realm) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onReceivedHttpAuthRequest(view, handler, host, realm);
} else {
super.onReceivedHttpAuthRequest(view, handler, host, realm);
}
}
@Override
public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
if (mCustomWebViewClient != null) {
return mCustomWebViewClient.shouldOverrideKeyEvent(view, event);
} else {
return super.shouldOverrideKeyEvent(view, event);
}
}
@Override
public void onUnhandledKeyEvent(WebView view, KeyEvent event) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onUnhandledKeyEvent(view, event);
} else {
super.onUnhandledKeyEvent(view, event);
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
@TargetApi(21)
public void onUnhandledInputEvent(WebView view, InputEvent event) {
if (Build.VERSION.SDK_INT >= 21) {
if (mCustomWebViewClient != null) {
// mCustomWebViewClient.onUnhandledInputEvent(view, event);
} else {
// super.onUnhandledInputEvent(view, event);
}
}
}
@Override
public void onScaleChanged(WebView view, float oldScale, float newScale) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onScaleChanged(view, oldScale, newScale);
} else {
super.onScaleChanged(view, oldScale, newScale);
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public void onReceivedLoginRequest(WebView view, String realm, String account, String args) {
if (Build.VERSION.SDK_INT >= 12) {
if (mCustomWebViewClient != null) {
mCustomWebViewClient.onReceivedLoginRequest(view, realm, account, args);
} else {
super.onReceivedLoginRequest(view, realm, account, args);
}
}
}
});
super.setWebChromeClient(new WebChromeClient() {
// file upload callback (Android 2.2 (API level 8) -- Android 2.3 (API level 10)) (hidden method)
@SuppressWarnings("unused")
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
openFileChooser(uploadMsg, null);
}
// file upload callback (Android 3.0 (API level 11) -- Android 4.0 (API level 15)) (hidden method)
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
openFileChooser(uploadMsg, acceptType, null);
}
// file upload callback (Android 4.1 (API level 16) -- Android 4.3 (API level 18)) (hidden method)
@SuppressWarnings("unused")
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
openFileInput(uploadMsg, null, false);
}
// file upload callback (Android 5.0 (API level 21) -- current) (public method)
@SuppressWarnings("all")
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback,
FileChooserParams fileChooserParams) {
if (Build.VERSION.SDK_INT >= 21) {
final boolean allowMultiple = fileChooserParams
.getMode() == FileChooserParams.MODE_OPEN_MULTIPLE;
openFileInput(null, filePathCallback, allowMultiple);
return true;
} else {
return false;
}
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onProgressChanged(view, newProgress);
} else {
super.onProgressChanged(view, newProgress);
}
}
@Override
public void onReceivedTitle(WebView view, String title) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onReceivedTitle(view, title);
} else {
super.onReceivedTitle(view, title);
}
}
@Override
public void onReceivedIcon(WebView view, Bitmap icon) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onReceivedIcon(view, icon);
} else {
super.onReceivedIcon(view, icon);
}
}
@Override
public void onReceivedTouchIconUrl(WebView view, String url, boolean precomposed) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onReceivedTouchIconUrl(view, url, precomposed);
} else {
super.onReceivedTouchIconUrl(view, url, precomposed);
}
}
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onShowCustomView(view, callback);
} else {
super.onShowCustomView(view, callback);
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) {
if (Build.VERSION.SDK_INT >= 14) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onShowCustomView(view, requestedOrientation, callback);
} else {
super.onShowCustomView(view, requestedOrientation, callback);
}
}
}
@Override
public void onHideCustomView() {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onHideCustomView();
} else {
super.onHideCustomView();
}
}
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture,
Message resultMsg) {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onCreateWindow(view, isDialog, isUserGesture, resultMsg);
} else {
return super.onCreateWindow(view, isDialog, isUserGesture, resultMsg);
}
}
@Override
public void onRequestFocus(WebView view) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onRequestFocus(view);
} else {
super.onRequestFocus(view);
}
}
@Override
public void onCloseWindow(WebView window) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onCloseWindow(window);
} else {
super.onCloseWindow(window);
}
}
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onJsAlert(view, url, message, result);
} else {
return super.onJsAlert(view, url, message, result);
}
}
@Override
public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onJsConfirm(view, url, message, result);
} else {
return super.onJsConfirm(view, url, message, result);
}
}
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue,
JsPromptResult result) {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onJsPrompt(view, url, message, defaultValue, result);
} else {
return super.onJsPrompt(view, url, message, defaultValue, result);
}
}
@Override
public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result) {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onJsBeforeUnload(view, url, message, result);
} else {
return super.onJsBeforeUnload(view, url, message, result);
}
}
@Override
public void onGeolocationPermissionsShowPrompt(String origin, Callback callback) {
if (mGeolocationEnabled) {
callback.invoke(origin, true, false);
} else {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onGeolocationPermissionsShowPrompt(origin, callback);
} else {
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
}
}
@Override
public void onGeolocationPermissionsHidePrompt() {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onGeolocationPermissionsHidePrompt();
} else {
super.onGeolocationPermissionsHidePrompt();
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public void onPermissionRequest(PermissionRequest request) {
if (Build.VERSION.SDK_INT >= 21) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onPermissionRequest(request);
} else {
super.onPermissionRequest(request);
}
}
}
@SuppressLint("NewApi")
@SuppressWarnings("all")
public void onPermissionRequestCanceled(PermissionRequest request) {
if (Build.VERSION.SDK_INT >= 21) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onPermissionRequestCanceled(request);
} else {
super.onPermissionRequestCanceled(request);
}
}
}
@Override
public boolean onJsTimeout() {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onJsTimeout();
} else {
return super.onJsTimeout();
}
}
@Override
public void onConsoleMessage(String message, int lineNumber, String sourceID) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onConsoleMessage(message, lineNumber, sourceID);
} else {
super.onConsoleMessage(message, lineNumber, sourceID);
}
}
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.onConsoleMessage(consoleMessage);
} else {
return super.onConsoleMessage(consoleMessage);
}
}
@Override
public Bitmap getDefaultVideoPoster() {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.getDefaultVideoPoster();
} else {
return super.getDefaultVideoPoster();
}
}
@Override
public View getVideoLoadingProgressView() {
if (mCustomWebChromeClient != null) {
return mCustomWebChromeClient.getVideoLoadingProgressView();
} else {
return super.getVideoLoadingProgressView();
}
}
@Override
public void getVisitedHistory(ValueCallback<String[]> callback) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.getVisitedHistory(callback);
} else {
super.getVisitedHistory(callback);
}
}
@Override
public void onExceededDatabaseQuota(String url, String databaseIdentifier, long quota,
long estimatedDatabaseSize, long totalQuota, QuotaUpdater quotaUpdater) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onExceededDatabaseQuota(url, databaseIdentifier, quota,
estimatedDatabaseSize, totalQuota, quotaUpdater);
} else {
super.onExceededDatabaseQuota(url, databaseIdentifier, quota, estimatedDatabaseSize, totalQuota,
quotaUpdater);
}
}
@Override
public void onReachedMaxAppCacheSize(long requiredStorage, long quota, QuotaUpdater quotaUpdater) {
if (mCustomWebChromeClient != null) {
mCustomWebChromeClient.onReachedMaxAppCacheSize(requiredStorage, quota, quotaUpdater);
} else {
super.onReachedMaxAppCacheSize(requiredStorage, quota, quotaUpdater);
}
}
});
setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(final String url, final String userAgent, final String contentDisposition,
final String mimeType, final long contentLength) {
final String suggestedFilename = URLUtil.guessFileName(url, contentDisposition, mimeType);
if (mListener != null) {
mListener.onDownloadRequested(url, suggestedFilename, mimeType, contentLength,
contentDisposition, userAgent);
}
}
});
}