2014-01-29 63 views
4

我正在開發基於Web視圖的Android應用程序。 所有在Android 4.1上工作正常,但在4.4上引發這個錯誤。Android Webview不適用於Android 4.4

11月1日至29日:16:03.075:E/eglCodecCommon(2179):glUtilsParamSize:不明PARAM 0x00000bd0 11月1日至29日:16:03.095:E/eglCodecCommon(2179):* * ERROR未知鍵入0x10037(glSizeof,72)

如果我取消這條線是」工作,但(邏輯)未顯示任何

webview.loadUrl("file:///android_asset/html/index.html"); 

web視圖配置代碼如下所示。

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"); 

的HTML代碼是完全

<!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> 

和Java JavaScript的接口是

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; 
     } 
    } 

感謝很多提前

回答

3

請新奇巧API Web視圖functionallity已改變

http://developer.android.com/guide/webapps/migrating.html

+0

非常感謝,但是如果我的應用程序名稱是NeverEver且包是com.example.nevereversecond,我應該使用什麼基礎url。如果我使用:view.loadDataWithBaseURL(「nevereversecond://com.example.nevereversecond/」,content,null,「UTF-8」,null);我得到和以前一樣的錯誤。 – user3241778

+0

檢查這個例子https://github.com/GoogleChrome/chromium-webview-samples – rajahsekar

+0

好吧,現在我有確切的示例應用程序,並得到完全相同的錯誤,這怎麼可能。它來自谷歌,所以我不認爲他們的應用程序有錯誤。 – user3241778

1

請確認。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 

     mWebView.evaluateJavascript("function myFunc(){"Your javascript code"};);", new ValueCallback<String>() { 
      @Override 
      public void onReceiveValue(final String dataResult) { 

      } 
     }); 

    } else { 
     mWebView.loadUrl("function myFunc(){"Your javascript code"};);"); 
    } 
+0

注意這兩種方法仍然適用於kitkat,只是'evaluateJavascript'是首選,因爲它有一個回調,因此更容易異步... – rogerdpack

相關問題