2012-05-15 13 views

Antwort

35

A WebView unterstützt sie, aber Sie müssen sie einschalten. Ich benutze den folgenden Code, der alle verfügbaren Funktionen aktiviert. Dies ist notwendig, weil Cashes beispielsweise nicht auf allen Android-Versionen unterstützt:

wv = (WebView) findViewById(R.id.webview); 
    WebSettings ws = wv.getSettings(); 

    ws.setJavaScriptEnabled(true); 
    ws.setAllowFileAccess(true); 


    if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.ECLAIR) { 
     try { 
      Log.d(TAG, "Enabling HTML5-Features"); 
      Method m1 = WebSettings.class.getMethod("setDomStorageEnabled", new Class[]{Boolean.TYPE}); 
      m1.invoke(ws, Boolean.TRUE); 

      Method m2 = WebSettings.class.getMethod("setDatabaseEnabled", new Class[]{Boolean.TYPE}); 
      m2.invoke(ws, Boolean.TRUE); 

      Method m3 = WebSettings.class.getMethod("setDatabasePath", new Class[]{String.class}); 
      m3.invoke(ws, "/data/data/" + getPackageName() + "/databases/"); 

      Method m4 = WebSettings.class.getMethod("setAppCacheMaxSize", new Class[]{Long.TYPE}); 
      m4.invoke(ws, 1024*1024*8); 

      Method m5 = WebSettings.class.getMethod("setAppCachePath", new Class[]{String.class}); 
      m5.invoke(ws, "/data/data/" + getPackageName() + "/cache/"); 

      Method m6 = WebSettings.class.getMethod("setAppCacheEnabled", new Class[]{Boolean.TYPE}); 
      m6.invoke(ws, Boolean.TRUE); 

      Log.d(TAG, "Enabled HTML5-Features"); 
     } 
     catch (NoSuchMethodException e) { 
      Log.e(TAG, "Reflection fail", e); 
     } 
     catch (InvocationTargetException e) { 
      Log.e(TAG, "Reflection fail", e); 
     } 
     catch (IllegalAccessException e) { 
      Log.e(TAG, "Reflection fail", e); 
     } 
    } 
+0

Mein AndroidStudio sagt mir immer, dass ich '/ data' nicht fest codiere. Wie kann ich die beiden Vorkommen ersetzen? – Bowi

+1

hi @Bowi benutze context.getFilesDir(). GetPath() – Abhilash

+0

das funktioniert nicht, wie kann ich es laufen lassen? –

1

Sie haben nicht angegeben, welche Funktionen Sie genau suchen,
, aber Android (und iOS) verwenden Webkit. Also ja.

+0

im, tatsächlich auf der Suche per Drag & Drop, Video, Leinwand Features wie die s –

+0

Tatsächlich ist der Standard-Android Browser hat einige Probleme mit einer Unterstützung der Funktionen von HTML5. Vielleicht ist diese [Präsentation] (http://www.slideshare.net/retomeier/html5-or-android-for-mobile-development) hilfreich für Sie. – kapand

8

auf Ihrem Android-Browser diesen Link öffnen: http://html5test.com es wird Ihnen alle Informationen, die Sie brauchen: Parsing-Regeln, Leinwand, Video , Audio, Elemente, Formulare, Webapp ...

+1

danke @moujib das ist super, das wird mir auch in Desktop-Browsern helfen –

2

Danke @theomega Ich habe die folgende Methode verwendet, um mit leichten Berührungen eine Auswahl zu aktivieren und Mouseovers zu aktivieren.

try { 
    WebSettings.class.getMethod("setLightTouchEnabled", new Class[]{Boolean.TYPE}); 
} catch (SecurityException e) {   
    e.printStackTrace(); 
} catch (NoSuchMethodException e) {   
    e.printStackTrace(); 
}