Webview Android ne fonctionne pas sur Android 4.4
Je développe une application Android basée sur une Webview.
Tout fonctionne bien sur Android 4.1, mais sur 4.4 il génère cette erreur.
01-29 11:16:03.075: E/eglCodecCommon(2179): glUtilsParamSize: unknow param 0x00000bd0
01-29 11:16:03.095: E/eglCodecCommon(2179): ** ERREUR de type inconnu 0x10037 (glSizeof,72)
Si je décommentez cette ligne de travail, mais (logiquement) pas montrer quoi que ce soit
webview.loadUrl("file:///android_asset/html/index.html");
La Webview config code ressemble à ceci.
webview = new WebView(this);
webview.clearCache(true);
webview.clearHistory();
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webview.setWebViewClient(new WebViewClient());
//webview.setWebChromeClient(new WebChromeClient());
webview.addJavascriptInterface(new JavaScriptInterface(this), "Android");
setContentView(webview);
webview.loadUrl("file:///android_asset/html/index.html");
Le code HTML est exactement
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"/>
<meta name="description" content="">
<meta name="author" content="">
<title>My Web App</title>
<script src="../js/jquery.js"></script>
<script src="../js/hammer.js"></script>
<script src="../js/lightboxes.js"></script>
<link href="../css/main.css" rel="stylesheet">
<link href="../css/lightboxes.css" rel="stylesheet">
<script type="text/javascript">
activeId = "contentOne";
passiveId = "contentTwo";
swiping = false;
function changeElements()
{
$("#" + passiveId).css("display", "none");
$("#" + passiveId).css("-webkit-transition", "-webkit-transform 0s linear");
$("#" + passiveId).css("-webkit-transform", "translate(150%,0)");
setTimeout(function() {
$("#" + passiveId).css("display", "block");
$("#" + passiveId).css("-webkit-transition", "-webkit-transform 0.25s ease-in-out");
swiping = false;
}, 10);
}
function nextPhrase()
{
if (!swiping)
{
swiping = true;
$("#" + activeId).css("-webkit-transform", "translate(-101%,0)");
$("#" + passiveId).css("-webkit-transform", "translate(2.5%,0)");
var result = Android.getPhrase();
document.getElementById(passiveId + "Text").textContent = result;
tempId = activeId;
activeId = passiveId;
passiveId = tempId;
setTimeout(changeElements, 600);
}
//$("#"+passiveId).css("-webkit-transition", "-webkit-transform 0.1s linear");
//$("#"+passiveId).css("-webkit-transform", "translate(-100%,0)");
//$("#"+passiveId).css("-webkit-transition", "-webkit-transform 0.6s ease-in-out");
//document.getElementById("next").style.backgroundColor="blue";
}
function rel()
{
document.getElementById("next").style.backgroundColor = "#FFF";
}
function changeColor(el)
{
document.getElementById("next").style.backgroundColor = "#EEE";
}
</script>
</head>
<body>
<div id="contentHeader">
Never I have ever ...
</div>
<div id="container">
<div id="contentOne">
<div id="contentOneText">
</div>
</div>
<div id="contentTwo">
<div id="contentTwoText">
</div>
</div>
</div>
<div id="headNav">
<div class="navElement" id="next" >
<div class="elName">
Next
</div>
</div>
</div>
<div id="proposalLightbox">sdfsdfasfasdf</div>
<div id="fade"></div>
<script>
Hammer(document).on("dragleft", function(e) {
nextPhrase();
});
document.getElementById('next').ontouchstart = function(eve) {
nextPhrase();
document.getElementById("next").style.backgroundColor = "#EEE";
}
document.getElementById('next').ontouchend = function(eve) {
//alert()
document.getElementById("next").style.backgroundColor = "#FFF";
}
var result = Android.getPhrase();
document.getElementById(activeId + "Text").textContent = result;
function testEcho(par)
{
alert(par);
}
function openProposeDialog(par)
{
showLightbox("proposalLightbox");
}
document.getElementById('fade').ontouchstart = function(eve) {
closeLightboxes();
}
//nextPhrase();
</script>
</body>
</html>
Et la Java-Javascript interface est
public class JavaScriptInterface {
Context mContext;
JavaScriptInterface(Context c) {
mContext = c;
}
public String showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
return toast;
}
public String getPhrase() {
String phrase = "";
//phrase = dataHandler.getRandomPhrase();
return phrase;
}
}
Merci beaucoup à l'avance
OriginalL'auteur user3241778 | 2014-01-29
Vous devez vous connecter pour publier un commentaire.
veuillez vérifier les nouveaux kitkat api web afficher les fonctionnalités a changé
http://developer.android.com/guide/webapps/migrating.html
cochez cette exemples github.com/GoogleChrome/chromium-webview-samples
Bon maintenant j'ai l'Exemple précis de l'application et d'obtenir exactement la même erreur, comment cela pourrait-il être. Son partir de Google donc je ne pense pas qu'il y est une erreur dans son application.
Il semble que ce soit un bug sur Android 4.4.2 émulateur. Il arrive avec l'émulateur officiel, Android SDK, et aussi pour Genymotion émulateurs, basée sur elle. Même une simple application qui affiche une vue web et montre tout code HTML, affiche cet avertissement et défile très lentement. J'ai testé cela sur un seul et le seul appareil avec Android 4.4.2 que j'ai, et qu'il ne montre pas le bug.
OriginalL'auteur rajahsekar
Vérifier avec elle.
evaluateJavascript
est préféré car c'est un rappel est donc plus facilement asynchrone...OriginalL'auteur chank007