2010-03-19 8 views
5

मैंने एक देशी एंड्रॉइड ऐप बनाया जो मूल रूप से वेबव्यू नियंत्रण होस्ट करता है। उस वेबव्यू का उपयोग उस पृष्ठ को लोड करने के लिए किया जाता है जो जावास्क्रिप्ट से window.openDatabase को कॉल करता है। मैं सफलतापूर्वक पुष्टि कर सकता हूं कि एपीआई window.openDatabase को सत्यापित करके मौजूद है।मैं एंड्रॉइड एप्लिकेशन में होस्ट किए गए वेबव्यू से window.openDatabase को कैसे कॉल करूं?

होस्ट किए गए वेब व्यू नियंत्रण में कॉल करते समय इस विधि को कॉल करना शून्य हो जाता है। एंड्रॉइड ब्राउज़र में एक ही विधि को कॉल करना डेटाबेस का एक उदाहरण देता है।

क्या किसी को वेब दृश्य नियंत्रण में सेटिंग्स या सेटिंग्स में अनुमतियां पता हैं जिन्हें डेटाबेस तक पहुंचने के लिए सेट करने की आवश्यकता है? क्या यह देशी ऐप में भी संभव है।

उत्तर

8

HTML5 डेटाबेस कॉल स्वीकार करने के लिए डेटाबेस API आप configure your WebView करने के लिए है का उपयोग करें:

WebSettings settings = webView.getSettings(); 
settings.setJavaScriptEnabled(true); 
settings.setJavaScriptCanOpenWindowsAutomatically(true); 
... 
settings.setDatabaseEnabled(true); 
settings.setDatabasePath("/data/data/your.package.name/database_name"); 

आप भी अपनी WebChromeClient की onExceededDatabaseQuota विधि को भी पार कर आपने अपना संग्रहण कोटा को नियंत्रित करना चाहते हैं:

public void onExceededDatabaseQuota(String url, String 
databaseIdentifier, long currentQuota, long estimatedSize, long 
totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { 
       quotaUpdater.updateQuota(204801); 
} 
+0

धन्यवाद pfleidi, मैं वास्तव में उन सेटिंग्स पहले से ही था। क्या मुझे ऐप को अतिरिक्त अनुमति देने के लिए मैनिफेस्ट फ़ाइल में कुछ भी बदलने की ज़रूरत है? क्या आपने इसे एमुलेटर या डिवाइस पर सफलतापूर्वक चलाया है, मैं वर्तमान में नेक्ससऑन का उपयोग कर रहा हूं। – Kevin

+1

हां, मैंने हाल ही में कुछ परीक्षण किए हैं। सुनिश्चित करें कि आपका पैकेज नाम सही है। – pfleidi

5

यह समाधान मेरे लिए काम किया:

WebSettings settings = myWebView.getSettings(); 
settings.setJavaScriptEnabled(true); 
settings.setDatabaseEnabled(true); 
String databasePath = this.getApplicationContext().getDir("database", 
         Context.MODE_PRIVATE).getPath(); 
settings.setDatabasePath(databasePath); 

भी पाया जा सकता है here

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