gpt4 book ai didi

android WebView HTML5访问数据库问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:38:30 24 4
gpt4 key购买 nike

我在一个应用程序中工作嵌入 WebView 并显示 HTML5 页面。

在android chrome浏览器中打开html页面时,数据库创建正常。

但是当我运行这个应用程序时,数据库无法创建。看来html页面无法在WebView上创建数据库。

有人知道为什么吗?

这是我的 Activity 代码:

 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访问数据库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6676871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com