WebView on Android ICS, iframe problems with android_assets

Sirs, I had the same problem when using Phonegap (Apache Cordova) and IFrames in Android Ice Cream Sandwich (4.0.3).

To solve this problem, I had to edit Apache Cordova Source Code. I changed the org.apache.cordova.CordovaWebViewClient.java file, and commented this part of the code, and included the last line (return false;).

So it now looks like this:

    // All else
    //        else {
    //
    //            // If our app or file:, then load into a new Cordova webview container by starting a new instance of our activity.
    //            // Our app continues to run.  When BACK is pressed, our app is redisplayed.
    //            if (url.startsWith("file://") || url.indexOf(this.ctx.baseUrl) == 0 || ctx.isUrlWhiteListed(url)) {
    //                this.ctx.loadUrl(url);
    //            }
    //
    //            // If not our application, let default viewer handle
    //            else {
    //                try {
    //                    Intent intent = new Intent(Intent.ACTION_VIEW);
    //                    intent.setData(Uri.parse(url));
    //                    ctx.startActivity(intent);
    //                } catch (android.content.ActivityNotFoundException e) {
    //                    LOG.e(TAG, "Error loading url "+url, e);
    //                }
    //            }
    //        }
    //        return true;
    return false;

This problem only happens on Android ICS, but I changed the code for all my apps. I’m still doing tests.

In my analysis, it seems that when you try to load a page inside a iFrame, the Android WebView on ICS interprets it as a new page request, and IT REPLACES THE MAIN APPLICATION!!, or in other words, it OPENS the requested page in the hole parent window.

I left the rest of the code untouched.

I hope it helps, like it did for me.

Best regards.

Alexandre Almeida

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)