2011-03-01 40 views
0

我正在編寫一個演示應用程序,以查看是否可以在原生android和web視圖之間共享數據庫。爲此,我爲我的活動添加了一個webview和一個按鈕。點擊按鈕,我在/data/data/com.demo/databases/testdb中創建一個數據庫。我可以在sqlite3提示符下看到這個數據庫。然後我寫了有以下腳本標籤在頭部分在android原生應用程序和html5之間共享數據庫

<script type="text/javascript"> 
     if (window.openDatabase){ 
      db = window.openDatabase("testdb", "1", "test database", 1024*1024); 
      alert("Database " + db); 
      if(db){ 
       db.transaction(function(tx) 
        {  
        tx.executeSql('SELECT * FROM KeyValues', 
         [], 
         function (tx, rs) { displayMyResult(rs); }, 
         function (tx, err) { displayMyError(err); }); 
        }); 
      } 
     }else{ 
      alert("Database is not supported"); 
     } 

     function displayMyResult(rs){ 
      alert("In display method"); 
      for(var i=0; i < rs.rows.length; i++) { 
       r = rs.rows.item(i); 
       alert('id = ' + r['id'] + ', Key: ' + r['key_name'] + ', Value: ' + r['key_value']); 
      } 
     } 

     function displayMyError(err){ 
      alert(err.message); 
     } 
    </script> 

問題是我一直都想與數據庫對象數據庫爲空HTML頁面。可能這是不可能的。或者我錯過了什麼。

任何幫助表示讚賞。

編輯:底線:是否有可能訪問由webview中的原生android API創建的數據庫?

回答

0

您是否嘗試過閱讀這篇文章How do I call window.openDatabase from a webView hosted in an android application?

你需要做的

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

這是正確的做法?我很好奇自己。 –

+0

我可以在/data/data/com.demo/databases文件夾中看到數據庫testdb。但是從html頁面 db = window.openDatabase(「testdb」,「1」,「test Database」,1024 * 1024);總是返回null – prashant

相關問題