From b496e03169b45f4207e66a0c6dab77c52d939a73 Mon Sep 17 00:00:00 2001 From: jcesarmobile Date: Wed, 20 Jan 2021 17:43:28 +0100 Subject: [PATCH] breaking: cleanup code for old android versions (#824) --- src/android/InAppBrowser.java | 141 ++++++----------------------- src/android/InAppChromeClient.java | 1 - 2 files changed, 26 insertions(+), 116 deletions(-) diff --git a/src/android/InAppBrowser.java b/src/android/InAppBrowser.java index aba1f70..479e04c 100644 --- a/src/android/InAppBrowser.java +++ b/src/android/InAppBrowser.java @@ -20,7 +20,6 @@ package org.apache.cordova.inappbrowser; import android.annotation.SuppressLint; import android.annotation.TargetApi; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; @@ -30,8 +29,6 @@ import android.provider.Browser; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffColorFilter; import android.graphics.Color; import android.net.http.SslError; import android.net.Uri; @@ -48,7 +45,6 @@ import android.view.WindowManager.LayoutParams; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import android.webkit.CookieManager; -import android.webkit.CookieSyncManager; import android.webkit.HttpAuthHandler; import android.webkit.JavascriptInterface; import android.webkit.SslErrorHandler; @@ -136,10 +132,8 @@ public class InAppBrowser extends CordovaPlugin { private boolean mediaPlaybackRequiresUserGesture = false; private boolean shouldPauseInAppBrowser = false; private boolean useWideViewPort = true; - private ValueCallback mUploadCallback; - private ValueCallback mUploadCallbackLollipop; + private ValueCallback mUploadCallback; private final static int FILECHOOSER_REQUESTCODE = 1; - private final static int FILECHOOSER_REQUESTCODE_LOLLIPOP = 2; private String closeButtonCaption = ""; private String closeButtonColor = ""; private boolean leftToRight = false; @@ -414,12 +408,7 @@ public class InAppBrowser extends CordovaPlugin { @SuppressLint("NewApi") @Override public void run() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { - // This action will have the side-effect of blurring the currently focused element - inAppWebView.loadUrl("javascript:" + finalScriptToInject); - } else { - inAppWebView.evaluateJavascript(finalScriptToInject, null); - } + inAppWebView.evaluateJavascript(finalScriptToInject, null); } }); } else { @@ -762,8 +751,7 @@ public class InAppBrowser extends CordovaPlugin { if (closeButtonColor != "") close.setColorFilter(android.graphics.Color.parseColor(closeButtonColor)); close.setImageDrawable(closeIcon); close.setScaleType(ImageView.ScaleType.FIT_CENTER); - if (Build.VERSION.SDK_INT >= 16) - close.getAdjustViewBounds(); + close.getAdjustViewBounds(); _close = close; } @@ -772,11 +760,7 @@ public class InAppBrowser extends CordovaPlugin { if (leftToRight) closeLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT); else closeLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); _close.setLayoutParams(closeLayoutParams); - - if (Build.VERSION.SDK_INT >= 16) - _close.setBackground(null); - else - _close.setBackgroundDrawable(null); + _close.setBackground(null); _close.setContentDescription("Close Button"); _close.setId(Integer.valueOf(id)); @@ -845,15 +829,11 @@ public class InAppBrowser extends CordovaPlugin { int backResId = activityRes.getIdentifier("ic_action_previous_item", "drawable", cordova.getActivity().getPackageName()); Drawable backIcon = activityRes.getDrawable(backResId); if (navigationButtonColor != "") back.setColorFilter(android.graphics.Color.parseColor(navigationButtonColor)); - if (Build.VERSION.SDK_INT >= 16) - back.setBackground(null); - else - back.setBackgroundDrawable(null); + back.setBackground(null); back.setImageDrawable(backIcon); back.setScaleType(ImageView.ScaleType.FIT_CENTER); back.setPadding(0, this.dpToPixels(10), 0, this.dpToPixels(10)); - if (Build.VERSION.SDK_INT >= 16) - back.getAdjustViewBounds(); + back.getAdjustViewBounds(); back.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { @@ -871,15 +851,11 @@ public class InAppBrowser extends CordovaPlugin { int fwdResId = activityRes.getIdentifier("ic_action_next_item", "drawable", cordova.getActivity().getPackageName()); Drawable fwdIcon = activityRes.getDrawable(fwdResId); if (navigationButtonColor != "") forward.setColorFilter(android.graphics.Color.parseColor(navigationButtonColor)); - if (Build.VERSION.SDK_INT >= 16) - forward.setBackground(null); - else - forward.setBackgroundDrawable(null); + forward.setBackground(null); forward.setImageDrawable(fwdIcon); forward.setScaleType(ImageView.ScaleType.FIT_CENTER); forward.setPadding(0, this.dpToPixels(10), 0, this.dpToPixels(10)); - if (Build.VERSION.SDK_INT >= 16) - forward.getAdjustViewBounds(); + forward.getAdjustViewBounds(); forward.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { @@ -942,15 +918,14 @@ public class InAppBrowser extends CordovaPlugin { inAppWebView.setId(Integer.valueOf(6)); // File Chooser Implemented ChromeClient inAppWebView.setWebChromeClient(new InAppChromeClient(thatWebView) { - // For Android 5.0+ public boolean onShowFileChooser (WebView webView, ValueCallback filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) { LOG.d(LOG_TAG, "File Chooser 5.0+"); // If callback exists, finish it. - if(mUploadCallbackLollipop != null) { - mUploadCallbackLollipop.onReceiveValue(null); + if(mUploadCallback != null) { + mUploadCallback.onReceiveValue(null); } - mUploadCallbackLollipop = filePathCallback; + mUploadCallback = filePathCallback; // Create File Chooser Intent Intent content = new Intent(Intent.ACTION_GET_CONTENT); @@ -958,30 +933,9 @@ public class InAppBrowser extends CordovaPlugin { content.setType("*/*"); // Run cordova startActivityForResult - cordova.startActivityForResult(InAppBrowser.this, Intent.createChooser(content, "Select File"), FILECHOOSER_REQUESTCODE_LOLLIPOP); + cordova.startActivityForResult(InAppBrowser.this, Intent.createChooser(content, "Select File"), FILECHOOSER_REQUESTCODE); return true; } - - // For Android 4.1+ - public void openFileChooser(ValueCallback uploadMsg, String acceptType, String capture) - { - LOG.d(LOG_TAG, "File Chooser 4.1+"); - // Call file chooser for Android 3.0+ - openFileChooser(uploadMsg, acceptType); - } - - // For Android 3.0+ - public void openFileChooser(ValueCallback uploadMsg, String acceptType) - { - LOG.d(LOG_TAG, "File Chooser 3.0+"); - mUploadCallback = uploadMsg; - Intent content = new Intent(Intent.ACTION_GET_CONTENT); - content.addCategory(Intent.CATEGORY_OPENABLE); - - // run startActivityForResult - cordova.startActivityForResult(InAppBrowser.this, Intent.createChooser(content, "Select File"), FILECHOOSER_REQUESTCODE); - } - }); currentClient = new InAppBrowserClient(thatWebView, edittext, beforeload); inAppWebView.setWebViewClient(currentClient); @@ -1006,10 +960,8 @@ public class InAppBrowser extends CordovaPlugin { } } - if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) { - settings.setMediaPlaybackRequiresUserGesture(mediaPlaybackRequiresUserGesture); - inAppWebView.addJavascriptInterface(new JsObject(), "cordova_iab"); - } + settings.setMediaPlaybackRequiresUserGesture(mediaPlaybackRequiresUserGesture); + inAppWebView.addJavascriptInterface(new JsObject(), "cordova_iab"); String overrideUserAgent = preferences.getString("OverrideUserAgent", null); String appendUserAgent = preferences.getString("AppendUserAgent", null); @@ -1037,10 +989,8 @@ public class InAppBrowser extends CordovaPlugin { CookieManager.getInstance().removeSessionCookie(); } - // Enable Thirdparty Cookies on >=Android 5.0 device - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { - CookieManager.getInstance().setAcceptThirdPartyCookies(inAppWebView,true); - } + // Enable Thirdparty Cookies + CookieManager.getInstance().setAcceptThirdPartyCookies(inAppWebView,true); inAppWebView.loadUrl(url); inAppWebView.setId(Integer.valueOf(6)); @@ -1131,32 +1081,14 @@ public class InAppBrowser extends CordovaPlugin { * @param intent the data from android file chooser */ public void onActivityResult(int requestCode, int resultCode, Intent intent) { - // For Android >= 5.0 - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - LOG.d(LOG_TAG, "onActivityResult (For Android >= 5.0)"); - // If RequestCode or Callback is Invalid - if(requestCode != FILECHOOSER_REQUESTCODE_LOLLIPOP || mUploadCallbackLollipop == null) { - super.onActivityResult(requestCode, resultCode, intent); - return; - } - mUploadCallbackLollipop.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent)); - mUploadCallbackLollipop = null; - } - // For Android < 5.0 - else { - LOG.d(LOG_TAG, "onActivityResult (For Android < 5.0)"); - // If RequestCode or Callback is Invalid - if(requestCode != FILECHOOSER_REQUESTCODE || mUploadCallback == null) { - super.onActivityResult(requestCode, resultCode, intent); - return; - } - - if (null == mUploadCallback) return; - Uri result = intent == null || resultCode != cordova.getActivity().RESULT_OK ? null : intent.getData(); - - mUploadCallback.onReceiveValue(result); - mUploadCallback = null; + LOG.d(LOG_TAG, "onActivityResult"); + // If RequestCode or Callback is Invalid + if(requestCode != FILECHOOSER_REQUESTCODE || mUploadCallback == null) { + super.onActivityResult(requestCode, resultCode, intent); + return; } + mUploadCallback.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent)); + mUploadCallback = null; } /** @@ -1356,28 +1288,13 @@ public class InAppBrowser extends CordovaPlugin { return false; } - - /** - * Legacy (deprecated in API 21) - * For Android 4.4 and below. - * @param view - * @param url - * @return - */ - @SuppressWarnings("deprecation") - @Override - public WebResourceResponse shouldInterceptRequest (final WebView view, String url) { - return shouldInterceptRequest(url, super.shouldInterceptRequest(view, url), null); - } - /** * New (added in API 21) * For Android 5.0 and above. * - * @param webView + * @param view * @param request */ - @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { return shouldInterceptRequest(request.getUrl().toString(), super.shouldInterceptRequest(view, request), request.getMethod()); @@ -1428,16 +1345,10 @@ public class InAppBrowser extends CordovaPlugin { super.onPageFinished(view, url); // Set the namespace for postMessage() - if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) { - injectDeferredObject("window.webkit={messageHandlers:{cordova_iab:cordova_iab}}", null); - } + injectDeferredObject("window.webkit={messageHandlers:{cordova_iab:cordova_iab}}", null); // CB-10395 InAppBrowser's WebView not storing cookies reliable to local device storage - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { - CookieManager.getInstance().flush(); - } else { - CookieSyncManager.getInstance().sync(); - } + CookieManager.getInstance().flush(); // https://issues.apache.org/jira/browse/CB-11248 view.clearFocus(); diff --git a/src/android/InAppChromeClient.java b/src/android/InAppChromeClient.java index f05f6a9..d73b11d 100644 --- a/src/android/InAppChromeClient.java +++ b/src/android/InAppChromeClient.java @@ -157,7 +157,6 @@ public class InAppChromeClient extends WebChromeClient { WebView inAppWebView = view; final WebViewClient webViewClient = new WebViewClient() { - @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { inAppWebView.loadUrl(request.getUrl().toString());