`
antkingwei
  • 浏览: 40700 次
  • 性别: Icon_minigender_1
  • 来自: 日照
社区版块
存档分类
最新评论

android 数据库随APK打包发布

阅读更多

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

Android专业开发群1:150086842
Android专业开发群2:219277004
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import com.android.qufu.dinner.MealActivityGroup;
import com.android.qufu.dinner.R;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;

public class Loggin extends Activity {
public static String dbName="dinner.db";//数据库的名字
    private static String DATABASE_PATH="/data/data/com.android.qufu.dinner/databases/";//数据库在手机里的路径
int alpha = 255; 
int b = 0; 
public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.login); 
       //判断数据库是否存在
       boolean dbExist = checkDataBase();
       if(dbExist){
       
       }else{//不存在就把raw里的数据库写入手机
        try{
        copyDataBase();
        }catch(IOException e){
        throw new Error("Error copying database");
        }
       }
            
       new Thread(new Runnable() { 
           public void run() { 
               initApp(); //初始化程序 
                
               while (b < 2) { 
                   try { 
                       if (b == 0) { 
                           Thread.sleep(20); 
                           b = 1; 
                       } else { 
                           Thread.sleep(50); 
                       } 
                       updateApp(); 
                   } catch (InterruptedException e) { 
                       e.printStackTrace(); 
                   } 
               } 
           } 
       }).start(); 

      
   } 

   public void updateApp() { 
       alpha -= 5; 
       if (alpha <= 0) { 
           b = 2; 
           if(true){
           try{
              Intent in = new Intent(Loggin.this,MealActivityGroup.class); 
              Loggin.this.startActivity(in); 
              Loggin.this.finish();
           }catch(Exception e){
           
            }
           }
          
       } 
      
   } 
   
   public boolean checkDataBase(){
    SQLiteDatabase checkDB = null;
    try{
    String databaseFilename = DATABASE_PATH+dbName;
    checkDB =SQLiteDatabase.openDatabase(databaseFilename, null,
    SQLiteDatabase.OPEN_READONLY);
    }catch(SQLiteException e){
   
    }
    if(checkDB!=null){
    checkDB.close();
    }
    return checkDB !=null?true:false;
   }
   
   public void copyDataBase() throws IOException{
    String databaseFilenames =DATABASE_PATH+dbName;
    File dir = new File(DATABASE_PATH);
    if(!dir.exists())//判断文件夹是否存在,不存在就新建一个
    dir.mkdir();
    FileOutputStream os = null;
    try{
    os = new FileOutputStream(databaseFilenames);//得到数据库文件的写入流
    }catch(FileNotFoundException e){
    e.printStackTrace();
    }
    InputStream is = Loggin.this.getResources().openRawResource(R.raw.test);//得到数据库文件的数据流
       byte[] buffer = new byte[8192];
       int count = 0;
       try{
       
        while((count=is.read(buffer))>0){
        os.write(buffer, 0, count);
        os.flush();
        }
       }catch(IOException e){
       
       }
       try{
        is.close();
        os.close();
       }catch(IOException e){
        e.printStackTrace();
       }
   }
   
   public void initApp(){          
   } 
} 
 

分享到:
评论

相关推荐

    Android 数据库打包随APK发布的实例代码

    有些时候我们的软件用到SQLite数据库,这个时候怎么把一个做好的数据库打包进我们的APK呢

    Android数据库打包实例(有详细注释)

    初学者 会问:我有一个.apk文件 还有一个.db文件,我该如何发布了?使用户只需要安装一个.apk文件便可以取得数据库.db里面的数据?我也是一个初学者,最近才搞明白的,共勉!

    将db文件和apk一起打包

    本文讲解了如何将SQLite数据库(dictionary.db文件)与apk文件一起发布

    APk 编辑器 Android

    它包括对apk文件的解包、打包、签名、汉化、应用共存制作、文字翻译等等操作!而本软件也是手机端首个,Android汉化软件,让你在没有电脑的情况下,在任何地点,任何时间都能汉化修改Android软件。 - 支持直接编辑...

    android开发资料大全

    Android数据库最基础的一个例子(本人已测试,可以运行) 为launcher添加一个仿Mac的dock(附源码) 使用Gallery实现Tab 仿QQ--tab切换动画实例 Android 小项目之---猜扑克牌游戏 (附源码) fleep滑动切换tab(切换...

    新版Android开发教程.rar

    这一联盟将会支持 Google 发布的 Android 手机操作系统或者应用软件,共同开发名为 Android 的 开 放源代码的移动系统。开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员 数 量已经达到了...

    Google Android SDK开发范例大全(完整版)

    Java 代码通过编译后,Android Developer Tools 可确保适当地将它打包,包括 AndroidManifest.xml 文件。 虽然没有 Eclipse 和 Android Developer Tools 插件也可以开发 Android 应用程序,但是那样就需要熟悉 ...

    Android代码-MutiChannelPackup

    Android多渠道打包,有网页版,Gradle版,Python版、BAT脚本、Jar版…看大家的喜好选择 META-INF渠道识别型:网页版、Python版、BAT脚本、Jar版、 Manifest渠道识别型:Gradle版 META-INF渠道识别详情请查看美团...

    基于AndroidStudio的体育新闻类型app项目源码

    项目介绍 本项目实现的是Android平台下的体育新闻类型app,名称叫做腾飞体育。实现的内容主要有进入app前展示应用的logo及名称的...该项目已打包,apk文件在app/release目录下,各位可以将其安装到Android手机上体验

    Android代码-Android密码管理客户端

    apk下载体验 一款基于Google Material Design,采用MVP模式设计开发的Android密码管理客户端--怕死我的(PassWord)如果对你有帮助,欢迎多多的star 屏幕截图 用到的技术点: MVP模式 数据库采用了Realm ...

    2010年谢彦的android笔记

    原创2010年android文档的整理打包的pdf档(含目录) 文档内容不能复制, 介意者请慎下. 大部分内容可在http://blog.csdn.net/xieyan0811上看到 文档目录如下 1 系统配置 1 1.1 建立SDK开发环境 2 1.2 Android源码的...

    Android应用源码 - 基于安卓的个人隐私监控项目

    最后,签名验证模块实现了应用程序APK的签名验证,有效减少了二次打包应用对手机的威胁。另外为了保护隐私项目监控了发送短信、读取联系人数据、读取通话记录、获取您当前位置、获得IMEI号码、获得ROOT权限、监听...

    读写Android中assets目录下的文件的方法详解

    主要介绍了读写Android中assets目录下的文件的方法详解,assets和res/raw工程目录下都可以放一些文件,这些文件将被打包到APK中应用使用,需要的朋友可以参考下

    AndroCompare::gear:一个有效的工具可以对两个android应用程序进行深入比较

    AndroCompare是一款工具,可接收两个Android应用程序(.APK文件),将其在各种因素上进行比较,然后将由此产生的差异和相似性保存在数据库中。 描述 该工具非常快速,可用于快速比较大量应用。 提供了两个名为app1....

    基于Android的学生信息管理2(源码+部署说明+演示视频+源码解释).zip

    该应用程序使用Java语言开发,采用Android Studio作为开发环境,使用MySQL数据库进行数据存储和管理。同时,该应用程序还使用了Bootstrap框架和jQuery库,使得界面更加美观和易用。 部署说明: 1. 下载源码文件并...

    AndroidFLHSApp:这是未打包的Android应用程序的源代码-Android app source code

    这是未打包的Android应用程序的源代码。 在app文件夹中... res目录(资源)包含XML和APK中除Java类文件之外的所有其他媒体。 值,布局和菜单都存储在此处并用XML编写。 res--dpi文件夹用于存储所有绘图(PNG,JPG,...

    仿qq音乐播放器.rar

    Android编写的模仿qq音乐的简单播放器 有登录注册播放音乐等功能  使用Relam数据库实现手机号登录注册和修改密码... 项目已经打包为Apk格式,测试已可以在真机上安装并且运行。 带设计文档!!!!!!!!!!!!

Global site tag (gtag.js) - Google Analytics