如何从Android应用程序中托管的webView调用window.openDatabase?

Kev*_*vin 5 javascript android

我创建了一个原生Android应用程序,它基本上托管了一个webView控件.然后,该webView用于加载从JavaScript调用window.openDatabase的页面.我可以通过验证window.openDatabase来成功确认API是否存在.

在托管的webView控件中调用时,调用此方法将返回null.在Android浏览器中调用相同的方法将返回数据库的实例.

有谁知道webView控件上的清单或设置中的渗透需要设置为访问数据库?这在本机应用程序中是否可行.

小智 8

要使用数据库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");
Run Code Online (Sandbox Code Playgroud)

如果要控制存储配额,还可以覆盖WebChromeClient的onExceededDatabaseQuota方法:

public void onExceededDatabaseQuota(String url, String
databaseIdentifier, long currentQuota, long estimatedSize, long
totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
                quotaUpdater.updateQuota(204801);
} 
Run Code Online (Sandbox Code Playgroud)


Dan*_*iel 5

这个解决方案对我有用:

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

也可以在这里找到