`
antkingwei
  • 浏览: 41148 次
  • 性别: 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提供了两个位置可以存放不会被压缩的文件:`res/raw` 和 `assets...

    Android打包APK Sqlite一起打包成APK

    在默认情况下,Android Studio并不会自动将外部的SQLite数据库文件打包进APK。因此,我们需要手动干预这个过程。一种常见的方法是在`assets`目录下放置SQLite数据库文件,因为该目录下的文件会在应用安装时被复制到...

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

    对于初学者来说,如何将SQLite数据库与APK文件打包在一起,以便用户安装应用后可以直接使用数据库中的数据,是一个常见的问题。下面我们将详细介绍这个过程。 首先,你需要在开发环境中创建并填充SQLite数据库。这...

    SQLite数据库与apk文件一起发布,raw目录下

    在Android系统中,SQLite数据库文件通常位于应用的私有数据目录下,但有时为了简化数据分发或者便于调试,开发者会选择将预填充的SQLite数据库文件放入apk的资源目录,如`res/raw`,并在应用安装后复制到合适的位置...

    新版骆驼 数据库 apk.zip

    3. **APK应用**:APK是Android应用程序的打包格式,包含了运行在Android设备上的所有必要组件,如代码、资源、权限声明等。这个APK可能是骆驼壳系统的客户端,让用户可以通过手机或平板电脑访问服务。APK的开发通常...

    基于android的简单图书管理系统(源码+数据库+apk).zip

    为了便于用户安装和使用,项目还打包成了APK(Android Package)文件,即library.apk。APK是Android应用程序的二进制格式,包含了应用的所有资源、代码和库文件。用户只需在Android设备上安装这个APK,就可以运行...

    将db文件和apk一起打包

    本文讲解了如何将SQLite数据库(dictionary.db文件)与apk文件一起发布。这个过程可以将dictionary.db文件复制到Eclipse Android工程中的res\raw目录中,从而在apk文件中包含数据库文件。 知识点1:Android中的资源...

    CL.rar_android_cl apk android

    11. **Gradle**:Android Studio使用Gradle作为构建工具,它负责编译、打包和发布应用。 12. **版本控制**:由于提供的是源代码,可能涉及到Git等版本控制系统,用于代码管理和团队协作。 通过分析压缩包中的"CL...

    Android应用开发之将SQLite和APK一起打包的方法

    总之,将SQLite与APK打包是为了在应用首次启动时就提供预填充的数据,提高用户体验。虽然Android Studio提供了更现代的方法,但基本的打包原理仍然是相同的。开发者需要考虑数据迁移、权限管理和版本控制等问题,以...

    安卓SQLite数据库相关-自己实现的android数据库快速开发组件.zip

    由于上传的压缩包中可能包含多个文件,如JavaApk源码说明.txt、下载更多打包源码~.url和PPT等,因此无法逐一验证所有代码的完整性和可运行性。用户在使用时可能需要根据实际项目需求进行调整和测试,部分代码可以...

    多渠道打包apk,重新签名apk

    在Android应用开发中,"多渠道打包apk"是一种常见的需求,尤其在应用发布阶段,为了适应不同的分发渠道,如应用商店、广告平台等,开发者需要生成带有不同渠道标识的APK文件。这个过程通常涉及到APK的签名和资源替换...

    完美版的Android 拼图游戏APK和工程源码

    12. **发布流程**:最后,了解APK的构建和签名过程,以及如何在Google Play Store或其他第三方市场发布应用,也是Android开发的重要一环。 通过深入研究这个"完美版的Android拼图游戏"的源码,开发者不仅能学习到...

    APK网络验证后台数据库+注入器.zip

    首先,APK是Android应用程序包(Android Package)的缩写,是Android平台上的应用软件的一种打包格式。APK文件包含了应用程序的所有组成部分,包括代码、资源、图标和元数据等。当一个APK文件被安装在Android设备上...

    APk 编辑器 Android

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

    Android-ChangeEnvironment一键快速切换开发环境以及多渠道打包

    `Android-ChangeEnvironment`项目专注于解决这两个问题,提供了一键快速切换开发环境和多渠道打包的功能,大大提升了开发和发布效率。以下是对这些概念的详细解释: **开发环境切换** 在Android应用的开发过程中,...

    android 连接mysql数据库jar包

    要使用这个jar包,你需要将`jtds-1.2.2.jar`添加到Android项目的libs目录下,并在构建过程中将其打包进APK。然后,在Android代码中,你可以通过以下步骤建立数据库连接: 1. 引入jar包:在`build.gradle`文件中,...

    基于Android的图书管理系统(客户端源码+服务端源码+数据库脚本+项目部署说明+apk执行文件).zip

    本项目“基于Android的图书管理系统”提供了完整的客户端源码、服务端源码、数据库脚本、项目部署说明以及apk执行文件,为学习者或开发者提供了一个完整的实战案例,便于理解和实践Android应用程序的开发。...

    android 5.1 系统 Music源码

    1. 音乐库管理:Android的MediaStore类提供对设备上音乐文件的访问,Music应用会遍历MediaStore中的音频内容,创建相应的数据模型并保存到数据库。 2. 播放控制:MusicService中的MediaPlayer对象负责音乐的播放。...

Global site tag (gtag.js) - Google Analytics