2012-05-15 11 views

Respuesta

35

A WebView los admite, pero debe activarlos en. Uso el siguiente código que enciende todas las funciones disponibles. Esto es necesario porque Cachés de aplicación, por ejemplo, no son compatibles con todos los Android-Versiones:

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

Mi AndroidStudio me sigue diciendo que no codifique ''/data'. ¿Cómo puedo reemplazar las dos apariciones? – Bowi

+1

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

+0

Esto no funciona, ¿cómo puedo hacerlo funcionar? –

1

No especificó qué características está buscando exactamente,
pero Android (e iOS) usa Webkit. Entonces sí.

+0

realmente im que busca arrastrar y soltar, vídeo, características de lona como que s –

+0

En realidad, el defecto de Android navegador tiene algunos problemas con un soporte de las características de HTML5. Tal vez esta [presentación] (http://www.slideshare.net/retomeier/html5-or-android-for-mobile-development) sea útil para usted. – kapand

8

En su navegador androide abrir este enlace: http://html5test.com que le dará toda la información que necesita: el análisis de las reglas, lienzo, vídeo , Audio, elementos, formularios, aplicaciones web ...

+1

gracias @moujib esto es increíble que me ayudará en los navegadores de escritorio también –

2

Gracias @theomega He usado la siguiente forma para permitir el uso de toques ligeros para hacer una selección y activar mouseover.

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