【问题标题】:Sharing database between android native application and html5android原生应用程序和html5之间的共享数据库
【发布时间】:2011-07-07 09:58:24
【问题描述】:

我正在编写一个演示应用程序,看看是否可以在原生 android 和 Web 视图之间共享数据库。为此,我在我的活动中添加了一个 webview 和一个按钮。单击按钮后,我在 /data/data/com.demo/databases/testdb 中创建了一个数据库。我可以在 sqlite3 提示符下看到这个数据库。然后我写了一个html页面,在head部分有以下脚本标签

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

问题是我总是将数据库对象 db 设为空。可能这甚至是不可能的。还是我错过了什么。

感谢任何帮助。

编辑:底线:是否可以在 webview 中访问由原生 android API 创建的数据库?

【问题讨论】:

    标签: android


    【解决方案1】:

    你有没有试过阅读这篇文章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");
    

    【讨论】:

    • 我可以在 /data/data/com.demo/databases 文件夹中看到数据库 testdb。但是从html页面 db = window.openDatabase("testdb", "1", "test Database", 1024*1024);总是返回 null
    猜你喜欢
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    相关资源
    最近更新 更多