Uploaded image for project: 'Apache Cordova'
  1. Apache Cordova
  2. CB-11578

InAppBrowser doesn't open on Android 4.0.4 (regression)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.4.0
    • None
    • None
    • Likely affects all pre-Jelly Bean Android devices. Tested on Android 4.0.4 with a Samsung Galaxy phone (Samsung-SGH-I437).

    • Patch

    Description

      Some changes made as part of the 1.4.0 release prevent the InAppBrowser from opening on my Android 4.0.4 test device. I traced the problem to some code that appears to have been refactored/removed when it shouldn't have been (setBackground/setBackgroundDrawable calls) and a call to getAdjustViewBounds which doesn't appear to serve any purpose but it is a method that was only made available at API level 16 (Jelly Bean).

      I made the following changes to the latest code in the repository to fix this problem:

      diff --git a/src/android/InAppBrowser.java b/src/android/InAppBrowser.java
      index 30915dc..f1e8222 100644
      --- a/src/android/InAppBrowser.java
      +++ b/src/android/InAppBrowser.java
      @@ -579,11 +579,18 @@ public class InAppBrowser extends CordovaPlugin {
                       Resources activityRes = cordova.getActivity().getResources();
                       int backResId = activityRes.getIdentifier("ic_action_previous_item", "drawable", cordova.getActivity().getPackageName());
                       Drawable backIcon = activityRes.getDrawable(backResId);
      -                back.setBackground(null);
      +
      +                if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN)
      +                {
      +                    back.setBackgroundDrawable(null);
      +                }
      +                else
      +                {
      +                    back.setBackground(null);
      +                }
                       back.setImageDrawable(backIcon);
                       back.setScaleType(ImageView.ScaleType.FIT_CENTER);
                       back.setPadding(0, this.dpToPixels(10), 0, this.dpToPixels(10));
      -                back.getAdjustViewBounds();
       
                       back.setOnClickListener(new View.OnClickListener() {
                           public void onClick(View v) {
      @@ -600,11 +607,18 @@ public class InAppBrowser extends CordovaPlugin {
                       forward.setId(Integer.valueOf(3));
                       int fwdResId = activityRes.getIdentifier("ic_action_next_item", "drawable", cordova.getActivity().getPackageName());
                       Drawable fwdIcon = activityRes.getDrawable(fwdResId);
      -                forward.setBackground(null);
      +
      +                if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN)
      +                {
      +                    forward.setBackgroundDrawable(null);
      +                }
      +                else
      +                {
      +                    forward.setBackground(null);
      +                }
                       forward.setImageDrawable(fwdIcon);
                       forward.setScaleType(ImageView.ScaleType.FIT_CENTER);
                       forward.setPadding(0, this.dpToPixels(10), 0, this.dpToPixels(10));
      -                forward.getAdjustViewBounds();
       
                       forward.setOnClickListener(new View.OnClickListener() {
                           public void onClick(View v) {
      @@ -644,11 +658,18 @@ public class InAppBrowser extends CordovaPlugin {
                       close.setId(Integer.valueOf(5));
                       int closeResId = activityRes.getIdentifier("ic_action_remove", "drawable", cordova.getActivity().getPackageName());
                       Drawable closeIcon = activityRes.getDrawable(closeResId);
      -                close.setBackground(null);
      +
      +                if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN)
      +                {
      +                    close.setBackgroundDrawable(null);
      +                }
      +                else
      +                {
      +                    close.setBackground(null);
      +                }
                       close.setImageDrawable(closeIcon);
                       close.setScaleType(ImageView.ScaleType.FIT_CENTER);
                       back.setPadding(0, this.dpToPixels(10), 0, this.dpToPixels(10));
      -                close.getAdjustViewBounds();
       
                       close.setOnClickListener(new View.OnClickListener() {
                           public void onClick(View v) {
      

      Attachments

        Issue Links

          Activity

            People

              jcesarmobile jcesarmobile
              scyclops Andrew
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: