html5 不能创建据库

转:http://stackoverflow.com/questions/6676871/android-webview-html5-access-database-problem

 

问题:

i am work at an app which Embed an WebView and display a HTML5 page .

when open the html page in android chrome Browser.the database was create normal.

but when i run this app , the database can not create . it seem that html page can not create the database on WebView.

anybody know why?

here is my Activity code:

 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"); 
 
}} 

here is my HTML5 page source code:

    <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);

 

And in 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); 
    } 
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值