我在一个应用程序工作嵌入WebView并显示HTML5页面.当在android chrome Browser中打开html页面时,数据库创建正常.但是当我运行这个应用程序时,数据库无法创建.看来html页面无法在WebView上创建数据库.有谁知道为什...
我在一个应用程序工作
嵌入WebView并显示HTML5页面.
当在android chrome Browser中打开html页面时,数据库创建正常.
但是当我运行这个应用程序时,数据库无法创建.
看来html页面无法在WebView上创建数据库.
有谁知道为什么?
这是我的活动代码:
public class efan_NewsReader extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WebView myWebView=(WebView)findViewById(R.id.my_webview);
myWebView.setWebViewClient(new WebViewClient());
WebSettings settings = myWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setDatabaseEnabled(true);
settings.setAppCacheEnabled(false);
myWebView.loadUrl("http://10.10.35.47:8080/html5test/test.htm");
}}
这是我的HTML5页面源代码:
<html manifest="mymanifest.manifest">
<head>
<meta http-equiv="Content-Type" content="text/html; content="no-cache" charset=utf-8" />
<script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
<script>
$(document).ready(function(){
databaseTest();
});
function databaseTest(){
//open database
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS testHtml (id unique, contentText)');
tx.executeSql('INSERT INTO testHtml (contentText) VALUES ("insert data test!")');
});
db.transaction(function(tx){
tx.executeSql('SELECT * FROM testHtml',[],function(tx,result){
var len=result.rows.length;
var msg = "<p>Found rows: " + len + "</p>";
$("#testinfo").append(msg);
},null);
});
}
</script>
</head>
<body>
<div>here is test info:</div>
<div id="testinfo"></div>
</body>
解决方法:
试试:
settings.setDatabaseEnabled(true);
String dbPath = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
settings.setDatabasePath(dbPath);
在WebChromeClient中:
myWebView.setWebChromeClient(new WebChromeClient()
{
@Override
public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater)
{
quotaUpdater.updateQuota(estimatedSize * 2);
}
}
应该没问题;)
沃梦达教程
本文标题为:android WebView HTML5访问数据库问题
基础教程推荐
猜你喜欢
- js保留两位小数最简单的实现方法 2023-07-09
- vue正则验证 2023-10-08
- JavaScript数组方法实例详解 2023-08-12
- 基于HTML5 Ajax文件上传进度条如何实现(jquery版本) 2022-10-17
- 解决layui框架excel导出长数据科学计数法问题 2022-10-29
- Vue3教程:Vue 3 + Element Plus + Vite 2 的后台管理系统开源啦 2023-10-08
- 高德地图WEB版基础控件展示 原创 2022-11-13
- Ajax 实现加载进度条 2023-01-26
- ajax无刷新评论功能 2023-01-26
- 关于ajax对象一些常用属性、事件和方法大小写比较常见的问题总结 2022-10-17