2012-05-15 17 views
13

मेरे पास HTML5 आधारित वेब एप्लिकेशन है, मैं इसे वेबव्यू के साथ एकीकृत करना चाहता हूं, तो क्या एंड्रॉइड वेबव्यू ब्राउज़र HTML5 सुविधाओं का समर्थन करता है?क्या एंड्रॉइड वेबव्यू ब्राउज़र HTML5 सुविधाओं का समर्थन करता है?

+0

यहाँ देखें: http://stackoverflow.com/questions/3930045/android-webkit-webview-and-html5 –

उत्तर

35

WebView उन्हें समर्थन करता है, लेकिन आपको उन्हें पर चालू करना होगा। मैं निम्नलिखित कोड का उपयोग करता हूं जो उपलब्ध सभी सुविधाओं को चालू करता है। यह आवश्यक है क्योंकि उदाहरण के लिए एप्लिकेशन कैश सभी एंड्रायड-संस्करण पर समर्थित नहीं हैं:

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

मेरा एंड्रॉइडस्टूडियो मुझे '/ data' हार्डकोड न करने के लिए कहता रहता है। मैं दो घटनाओं को कैसे बदल सकता हूं? – Bowi

+1

हाय @ बॉवी संदर्भ का उपयोग करें .getFilesDir()। GetPath() – Abhilash

+0

यह काम नहीं कर रहा है, मैं इसे कैसे चला सकता हूं? –

1

आपने यह निर्दिष्ट नहीं किया है कि आप कौन सी विशेषताओं को देख रहे हैं,
लेकिन एंड्रॉइड (और आईओएस) वेबकिट का उपयोग करते हैं। तो हाँ।

+0

वास्तव में खींचें और ड्रॉप, वीडियो, कैनवास सुविधाओं की तलाश में है कि –

+0

डिफ़ॉल्ट Android एस की तरह वास्तव में im एचटीएमएल 5 की सुविधाओं के समर्थन के साथ ब्राउज़र में कुछ परेशानी है। शायद यह [प्रस्तुति] (http://www.slideshare.net/retomeier/html5-or-android-for- मोबाइल- विकास) आपके लिए सहायक होगा। – kapand

8

अपने Android ब्राउज़र पर इस लिंक को खोलने: http://html5test.com यह आप सभी जानकारी है कि आप की जरूरत है दे देंगे: नियम पार्स, कैनवस, वीडियो , ऑडियो, तत्व, रूप, वेबएप ...

+1

धन्यवाद @ moujib यह बहुत ही बढ़िया है जो डेस्कटॉप ब्राउज़र में भी मेरी मदद करेगा –

2

धन्यवाद @ थियोमेगा मैंने चयन करने और माउसओवर सक्रिय करने के लिए हल्के स्पर्शों का उपयोग करने के लिए निम्न तरीकों का उपयोग किया।

try { 
    WebSettings.class.getMethod("setLightTouchEnabled", new Class[]{Boolean.TYPE}); 
} catch (SecurityException e) {   
    e.printStackTrace(); 
} catch (NoSuchMethodException e) {   
    e.printStackTrace(); 
} 
संबंधित मुद्दे

 संबंधित मुद्दे