js里面写好的数据库我想用在Android上、不多说直接来源码、


这个是Android 代码 这里面的布局只是个Webview

package com.example.fyapp.db;
import com.example.fyapp.R;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebStorage.QuotaUpdater;


public class WebViewActivity extends Activity {
private WebView webView;


@SuppressLint({ "SetJavaScriptEnabled", "JavascriptInterface" })
@Override
protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);
setContentView(R.layout.sqlwebviwe);
webView = (WebView) findViewById(R.id.sqlsq);
String dir=this.getApplicationContext().getDir("contactdb", Context.MODE_PRIVATE).getPath();

webView = new WebView(this);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDatabaseEnabled(true);
settings.setDatabasePath(dir);
 
webView.loadUrl("file:///android_asset/newsqlite.html");


setContentView(webView);

//这个方法必须要写、不是js数据库直接无响应
webView.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
// TODO Auto-generated method stub
return super.onJsAlert(view, url, message, result);
}
@Override
public void onExceededDatabaseQuota(String url,
String databaseIdentifier, long quota,
long estimatedDatabaseSize, long totalQuota,
QuotaUpdater quotaUpdater) {
// TODO Auto-generated method stub
quotaUpdater.updateQuota(estimatedDatabaseSize*2);
}
});
webView.addJavascriptInterface(this, "fa");

}


protected void query(String view2) {
// TODO Auto-generated method stub


}


public class DemoJavaScriptInterface {
public DemoJavaScriptInterface() {


}


public int mydata() {
Log.i("TEST", "mydata.....");
return 0;
}
}


@Override
protected void onResume() {
if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
super.onResume();
}


@Override
// 设置回退
// 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO
// Auto-generated
// method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
webView.goBack();// 返回上一页面
return true;
} else {
System.exit(0);// 退出程序
}
}
return super.onKeyDown(keyCode, event);
}


}

这个是html的代码  (这个是放在Android assets目录下的)

  


   
    HTML5本地存储之本地数据库篇
    //注意这点的路径、放在Android  assets目录下就直接写名字
   
   


      
       
       
       

       
       
       

       
       
       

       
   
   

   
   


js代码(这个是放在Android assets目录下的

 //打开数据库
 
        var db = openDatabase('contactdb','','local database demo',204800);


        //保存数据
        function save(){
            var user_name = document.getElementById("user_name").value;
            var mobilephone = document.getElementById("mobilephone").value;
            var company = document.getElementById("company").value;
            //创建时间
            var time = new Date().getTime();
            db.transaction(function(tx){
                tx.executeSql('insert into contact values(?,?,?,?)',[user_name,mobilephone,company,time],onSuccess,onError);
            });
        }
         //sql语句执行成功后执行的回调函数
        function onSuccess(tx,rs){
            alert("操作成功");
            loadAll();
        }
        //sql语句执行失败后执行的回调函数
        function onError(tx,error){
            alert("操作失败,失败信息:"+ error.message);
        }
        //将所有存储在sqlLite数据库中的联系人全部取出来
        function loadAll(){
            var list = document.getElementById("list");
            db.transaction(function(tx){
                //如果数据表不存在,则创建数据表
                tx.executeSql('create table if not exists contact(name text,phone text,company text,createtime INTEGER)',[]);
                //查询所有联系人记录
                tx.executeSql('select * from contact',[],function(tx,rs){
                   if(rs.rows.length>0){
                        var result = "

";
                        result += "";
                        for(var i=0;i                             var row = rs.rows.item(i);
                            //转换时间,并格式化输出
                            var time = new Date();
                            time.setTime(row.createtime);
                            var timeStr = time.format("yyyy-MM-dd hh:mm:ss");
                            //拼装一个表格的行节点
                            result += "
";
                        }
                        list.innerHTML = result;
                   }else{
                        list.innerHTML = "目前数据为空,赶紧开始加入联系人吧";
                   } 
                });
            });
        }
       Date.prototype.format = function(format)
        {
            var o = {
            "M+" : this.getMonth()+1, //month
            "d+" : this.getDate(),    //day
            "h+" : this.getHours(),   //hour
            "m+" : this.getMinutes(), //minute
            "s+" : this.getSeconds(), //second
            "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
            "S" : this.getMilliseconds() //millisecond
            }
            if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
            (this.getFullYear()+"").substr(4 - RegExp.$1.length));
            for(var k in o)if(new RegExp("("+ k +")").test(format))
            format = format.replace(RegExp.$1,
            RegExp.$1.length==1 ? o[k] :
            ("00"+ o[k]).substr((""+ o[k]).length));
            return format;
        }
       //删除联系人信息
        function del(phone){
             db.transaction(function(tx){
                //注意这里需要显示的将传入的参数phone转变为字符串类型
                tx.executeSql('delete from contact where phone=?',[String(phone)],onSuccess,onError);
            });
        }


  这个是css代码(这个是放在Android assets目录下的


     th {
            font: bold 11px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
            color: #4f6b72;
            border-right: 1px solid #C1DAD7;
            border-bottom: 1px solid #C1DAD7;
            border-top: 1px solid #C1DAD7;
            letter-spacing: 2px;
            text-transform: uppercase;
            text-align: left;
            padding: 6px 6px 6px 12px;
        }
        td {
            border-right: 1px solid #C9DAD7;
            border-bottom: 1px solid #C9DAD7;
            background: #fff;
            padding: 6px 6px 6px 12px;
            color: #4f6b72;
        }





















更多相关文章

  1. android APP隐私政策弹框的实现代码实例
  2. android手机打电话代码分析
  3. Android使用SQlite数据库
  4. 如何编写高效的android代码(1)
  5. Android 上层界面到内核代码的完整的流程分析,以alarm为例子
  6. Flex与Android共享Amfphp SERVICES下自己的代码
  7. Android内部数据库

随机推荐

  1. Android(安卓)常见问题解决记录
  2. Android 下使用 JSON 实现 HTTP 请求,外加
  3. Android(安卓)判断当前局域网是否有网络
  4. Android Market api
  5. Android(安卓)数据库升级 数据迁移 数据
  6. 在android虚拟机中安装删除应用程序
  7. Android新的menu实现――ActionMode
  8. Android(安卓)播放本地视频的动态权限问
  9. Android入门扫盲之一
  10. Android LBS中基站定位
序号姓名手机公司添加时间操作
"+(i+1)+""+row.name+""+row.phone+""+row.company+""+timeStr+"