diff --git a/framework/src/org/apache/cordova/IceCreamCordovaWebViewClient.java b/framework/src/org/apache/cordova/IceCreamCordovaWebViewClient.java index 7eb759e2..5f32243c 100644 --- a/framework/src/org/apache/cordova/IceCreamCordovaWebViewClient.java +++ b/framework/src/org/apache/cordova/IceCreamCordovaWebViewClient.java @@ -59,7 +59,7 @@ public class IceCreamCordovaWebViewClient extends CordovaWebViewClient { // Allow plugins to intercept WebView requests. Uri remappedUri = resourceApi.remapUri(origUri); - if (!origUri.equals(remappedUri) || needsSpecialsInAssetUrlFix(origUri)) { + if (!origUri.equals(remappedUri) || needsSpecialsInAssetUrlFix(origUri) || needsKitKatContentUrlFix(origUri)) { OpenForReadResult result = resourceApi.openForRead(remappedUri, true); return new WebResourceResponse(result.mimeType, "UTF-8", result.inputStream); } @@ -74,6 +74,14 @@ public class IceCreamCordovaWebViewClient extends CordovaWebViewClient { } } + private static boolean needsKitKatContentUrlFix(Uri uri) { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { + if ("content".equals(uri.getScheme()) && uri.toString().contains("%3A")) { + return true; + } + } + return false; + } private static boolean needsSpecialsInAssetUrlFix(Uri uri) { if (CordovaResourceApi.getUriType(uri) != CordovaResourceApi.URI_TYPE_ASSET) { return false;