Как мне вызвать window.openDatabase из веб-приложения, размещенного в приложении для Android? - PullRequest
5 голосов
/ 19 марта 2010

Я создал собственное приложение для Android, которое в основном содержит элемент управления webView. Этот webView затем используется для загрузки страницы, которая вызывает window.openDatabase из JavaScript. Я могу успешно подтвердить, что API существует, проверив window.openDatabase.

Вызов этого метода возвращает нуль при вызове в размещенном элементе управления webView. Вызов этого же метода в браузере Android возвращает экземпляр базы данных.

Кто-нибудь знает прохождения в манифесте или настройки в элементе управления webView, которые необходимо настроить для доступа к базе данных? Это возможно даже в родном приложении.

Ответы [ 2 ]

8 голосов
/ 19 марта 2010

Чтобы использовать API базы данных, вам нужно настроить WebView для приема вызовов базы данных HTML5:

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

Вы также можете переопределить метод onExceededDatabaseQuota вашего WebChromeClient, если вы хотите контролировать свою квоту хранилища:

public void onExceededDatabaseQuota(String url, String
databaseIdentifier, long currentQuota, long estimatedSize, long
totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
                quotaUpdater.updateQuota(204801);
} 
5 голосов
/ 02 февраля 2011

Это решение сработало для меня:

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

Также можно найти здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...