有些时候我们的软件用到SQLite数据库,这个时候怎么把一个做好的数据库打包进我们的APK呢,其实很简单,就是把我们的数据库文件放到我们的手机里,所以不必局限在哪个地方写这个代码,在第一次创建数据库的时候可以,我觉得在软件起动页里效果更好一点,首先我们应该把事先写好的数据库文件比如 test.db放到res文件夹里的raw文件夹里,也可以放到assets里,因为这两个文件夹不会在生成APK的时候不会被压缩。

1,DataBaseUtil用于将raw中的db文件copy到手机中,代码如下

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;import com.ata.app.R;/*** copy数据库到apk包* * @author NGJ* */
public class DataBaseUtil {private Context context;public static String dbName = "Kao.db";// 数据库的名字private static String DATABASE_PATH;// 数据库在手机里的路径public DataBaseUtil(Context context) {this.context = context;String packageName = context.getPackageName();DATABASE_PATH="/data/data/"+packageName+"/databases/";}/*** 判断数据库是否存在* * @return false or true*/public boolean checkDataBase() {SQLiteDatabase db = null;try {String databaseFilename = DATABASE_PATH + dbName;db = SQLiteDatabase.openDatabase(databaseFilename, null,SQLiteDatabase.OPEN_READONLY);} catch (SQLiteException e) {}if (db != null) {db.close();}return db != null ? true : false;}/*** 复制数据库到手机指定文件夹下* * @throws IOException*/public void copyDataBase() throws IOException {String databaseFilenames = DATABASE_PATH + dbName;File dir = new File(DATABASE_PATH);if (!dir.exists())// 判断文件夹是否存在,不存在就新建一个dir.mkdir();FileOutputStream os = new FileOutputStream(databaseFilenames);// 得到数据库文件的写入流InputStream is = context.getResources().openRawResource(R.raw.kao);// 得到数据库文件的数据流byte[] buffer = new byte[8192];int count = 0;while ((count = is.read(buffer)) > 0) {os.write(buffer, 0, count);os.flush();}is.close();os.close();}
}

2,在需要的activity中加入如下方法用于具体的copy操作

private void copyDataBaseToPhone() {DataBaseUtil util = new DataBaseUtil(this);// 判断数据库是否存在boolean dbExist = util.checkDataBase();if (dbExist) {Log.i("tag", "The database is exist.");} else {// 不存在就把raw里的数据库写入手机try {util.copyDataBase();} catch (IOException e) {throw new Error("Error copying database");}}}

Android 数据库打包随APK发布相关推荐

  1. Android Studio打包生成APK

    Android Studio打包生成APK 当我们编写好代码,测试号应用后,需要在真机环境下测试,这个时候要生成apk,具体步骤如下: 如图,点击Build > Generate Signed ...

  2. android 自定义apk名,Android Studio 打包自定义apk文件名

    使用Android Studio打包的时候,我们有时候需要自定义apk的文件名,在此记录一下. 在app的build.gradle中,根节点下使用关键词def声明一个全局变量,用于获取打包的时间,格式 ...

  3. 《Android studio 创建生成keystore SHA1值的申请 高德地图key值申请 android studio 打包生成apk》

    开发背景:目前做车载项目,领导要求用高德地图.整理了一下,差不多就是下面的目录: 一.创建生成keystore: 二.SHA1值的申请: 三.高德地图key值申请: 四.android studio ...

  4. 将Eclipse Android项目打包成APK文件

    将Eclipse Android项目打包成APK文件是本文要介绍的内容,主要是来了解并学习Eclipse Android打包的内容,具体关于Eclipse Android内容的详解来看本文  . Ec ...

  5. java eclipse生成apk,将Eclipse Android项目打包成APK文件

    将Eclipse Android项目打包成APK文件是本文要介绍的内容,主要是来了解并学习Eclipse Android打包的内容,具体关于Eclipse Android内容的详解来看本文. Ecli ...

  6. Android项目打包生成apk文件

    Android开发打包生成APK文件 打包apk文件分为两种 无需密钥的apk 有密钥的apk(常规) 他们的区别只是就是安全问题. 1.没有密钥的apk 点击之后会自动生成没有密钥的APK. 在编辑 ...

  7. html5游戏封装安卓,html5游戏移植到android并打包成apk,加广告《二》

    html5游戏移植到android并打包成apk,加广告<二> 这篇则讲解开发集成,先看看工程目录结构 ? qqbrowser_sdk_v1.2.jar为X5内核sdk,下载注册开发者 B ...

  8. java编写自动化脚本生成apk_Unity3D研究院之Android全自动打包生成apk(六十九)

    Unity自动打包Android其实要比IOS容易得多,因为Android不用先生成java工程,然后在构建.apk包,我先说说Android打包的步骤. 1.把sdk拷贝至Plugins/Andro ...

  9. android程序导入虚拟机,android项目打包成apk应用程序后部署到虚拟机上测试

    一:打包成apk包 这个比较简单,如下 右键点击项目--> export -->  android Project -->  选择密钥等信息  --> 填写密钥信息  --&g ...

最新文章

  1. java切面类整合_SpringBoot2.x【五】整合AOP切面编程
  2. c# xml html标签,在asp.net(C#)中采用自定义标签和XML、XSL显示数据
  3. 设计模式 之 《备忘录模式》
  4. linux双小于命令,Linux文本比较命令:diff
  5. 揭秘 SIGCOMM 20‘ 论文:阿里云网络洛神 VTrace 系统
  6. yii多表查询--学习随笔
  7. ios 不被遮挡 阴影_为何你没见到日环食?你不知道的天象常识原来还有这么多 | 返朴...
  8. J2EE如何生成验证码图片和点击刷新验证码
  9. glassfish启动后不能进入部署页面_Flink on Yarn三部曲之二:部署和设置
  10. 突击计划——求整数中的较大者
  11. pygame重新开始_Pygame(十八)音乐
  12. 详解哈夫曼树和哈夫曼编码
  13. 【机器学习】基于朴素贝叶斯的新闻分类
  14. NPN和PNP型传感器或开关如何接线?
  15. 前端用ps创建画布的分辨率应该设置的值
  16. 斯坦福大学iOS应用开发教程学习笔记(第六课)故事版 StoryBoard
  17. Java 给Word指定字符串添加批注
  18. 不同的量化交易软件速度差距大吗?
  19. qq浏览器HTML5在哪,qq浏览器wifi助手功能在哪里?
  20. 功利性地去多读书(一年300本书)

热门文章

  1. resultMap 使用
  2. mtr-网络分析工具
  3. 魔兽世界服务器显示排队中,魔兽世界怀旧服一直在排队怎么办 快速排队都有这些办法你知道吗...
  4. python 内存分析工具_python内存监控工具memory_profiler和guppy的用法详解
  5. 手机直播开发,直播程序源码,直播源码分享经验
  6. 东南大学计算机软件,东南大学实现 Adobe 2018 版软件正版化
  7. photoshop中英文字体 还有几个素材 20000款
  8. 学计算机以来最好的投资
  9. #利用C语言-EasyX图形设计-制作简易计算器#
  10. java xmn_Java JVM 参数 -Xms -Xmx -Xmn -Xss调优总结