WebView en Android ICS, problemas iframe con android_assets
android-4.0 android-assets (1)
Señores, tuve el mismo problema cuando uso Phonegap (Apache Cordova) y IFrames en Android Ice Cream Sandwich (4.0.3).
Para resolver este problema, tuve que editar el código fuente de Apache Cordova. Cambié el org.apache.cordova. CordovaWebViewClient.java , y comentó esta parte del código, e incluyó la última línea ( return false; ).
Entonces ahora se ve así:
// 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;
Este problema solo ocurre en Android ICS, pero cambié el código para todas mis aplicaciones. Todavía estoy haciendo pruebas.
En mi análisis, parece que cuando intenta cargar una página dentro de un iFrame, Android WebView en ICS lo interpreta como una nueva solicitud de página, ¡Y REEMPLAZA LA APLICACIÓN PRINCIPAL! , o en otras palabras, ABRE la página solicitada en la ventana principal del agujero.
Dejé el resto del código intacto.
Espero que ayude, como lo hizo por mí.
Atentamente.
Alexandre Almeida
Mi motor de aplicaciones se ejecuta dentro de un WebView. Abarca diferentes IFRAMES. Tanto la aplicación principal html como los iframes html están en android_assets. En Android 3.x no hay problemas alguna vez. Lo mismo en el navegador Chrome, etc.
Si creo un IFRAME (createElement -> appendChild) se crea el iframe.
Cuando cargo cosas en él (iframe.src = "url" <> iframe.contentWindow.location.href = "url") ... ¡¡REEMPLAZA LA APLICACIÓN PRINCIPAL !! (en lugar de cargar en iframe)
Ya probado:
- window.setTimeout para retrasar la carga ... falló.
- en la vista web, inyecte X-Frame-Options = SAME_ORIGIN como encabezado en cualquier página cargada -> fallido
- crear el iframe, establecer sandbox = same_origin, allow_scripts -> failed
¿Alguien con problemas similares? ¿O alguien puede ayudarme a encontrar documentación sobre WebView ICS bugs vs Honeycomb?
También se encontraron muchos otros problemas extraños ... ¿ICS realmente es este buggy? : S: S