`

android从assets复制数据库到/databases的替代方法

阅读更多
     经常我们需要使用一些事先做好内容的数据库,比如字典等, 这就要加载已有的数据库文件,通常把它们放在assets 或者raw中,在程序运行时copy到程序内部空间:/data/data/package/my_app/databases, 详细的做法看这里。

但是这样有个缺点,当文件较大时会占用较长的时间,用户难免会有点小着急。

我们可以这样HACK来把copy的环节省去:

1 把数据库文件(如MYDB.db) 放到PROJECT/libs/armeabi/ 改名为libMYDB.db.so(注意前面必需加”lib")。

2 用这样的方式打开:
DATABASE_PATH = "/data/data/" + packageName + "/lib/";            
SQLiteDatabase db = SQLiteDatabase.openDatabase(DATABASE_PATH + libMYDB.db.so, null, SQLiteDatabase.OPEN_READONLY | SQLiteDatabase.NO_LOCALIZED_COLLATORS);  



这样等程序一安装完就可以使用数据库了,其原理是把数据库文件伪装成lib库文件,程序在安装时会自动copy到/data/data/package/lib/,省去了我们自己的copy过程。

目前我测试了读操作,写操作还有待测试。
分享到:
评论

相关推荐

    Android 将assets中的数据库导入到项目中databases

    2. **复制数据库文件**:在`SQLiteOpenHelper`的子类中,创建一个方法用于从`assets`目录复制数据库文件到`databases`目录。这里需要用到`Context`对象,可以通过`getApplication()`或者`getApplicationContext()`...

    android的assets下的sql文件操作

    在AndroidManifest.xml文件中,确保添加了读写外部存储的权限,即使`assets`中的文件不直接涉及外部存储,但在复制数据库到应用私有目录时可能需要这一权限。 6. **异常处理** 在处理数据库操作时,需要对可能...

    android:assets下的文件复制到SD卡

    综上所述,通过以上步骤和知识点,我们可以实现从`android:assets`目录将资源文件复制到SD卡的功能。这个过程涉及Android系统的文件操作、权限管理以及对AssetManager的使用,对于Android开发者来说是非常基础且重要...

    android 将assets 下的文件复制到手机内存中

    在Android开发中,有时我们需要将应用内部的资源文件,如配置文件、数据库文件或静态数据等,复制到手机的外部存储(内存或SD卡)以便于应用运行时使用。这个过程通常涉及到Android的文件系统操作和权限管理。下面将...

    Android访问assets本地json文件的方法

    在main文件夹下新建assets文件,然后再assets文件中新建namelist.json文件夹,将json数据复制到test.json文件中。 2、访问json文件 try { AssetManager assetManager = getAssets(); // 获得assets资源管理器...

    android中复制资源文件中的数据库文件到sd卡或内存源码

    5. **调用复制方法**:在应用启动时调用上面定义的`copyFileFromAssetsToPath()`方法,将数据库文件从assets复制到目标路径。 ```java if (!copyFileFromAssetsToPath(context, "myDatabase.db", targetPath)) { /...

    方舟游戏框架,一个 2D 游戏框架。

    方舟游戏框架,一个 2D 游戏框架。 文件 Ark-Game-Framework-master.zip 包含以下条目。 .gitignore//from ww w. jav a2 s ....Android Sample/.classpath Android Sample/.project...Android Sample/assets/images/inte

    Android 从assets中获取ini文件内容

    本篇文章将详细介绍如何在Android应用程序中从assets目录下获取ini文件的内容,并实现对指定内容的读取。 首先,让我们了解一下Android项目的assets目录。这是一个特殊的位置,允许开发者放置任何静态资源文件,...

    android从assets和res中读取文件.pdf

    Android从assets和res中读取文件 Android中的资源文件夹主要有两个:res和assets。res文件夹用于存放编译后的资源文件,而assets文件夹用于存放原始文件。下面我们将详细介绍这两个文件夹的作用和如何从中读取文件...

    Android操作存放在assets文件夹下SQLite数据库的方法

    这段代码定义了一个名为`AssetsDatabaseManager`的类,它包含初始化方法`initManager`和用于从`assets`复制数据库的`copyDatabaseFromAssets`方法。初始化时,检查目标数据库文件是否存在,若不存在,则从`assets`...

    android 从assets获取图片

    通过上述介绍,我们了解到如何在Android应用程序中从`assets`文件夹获取图片的方法。这种方法简单实用,适用于多种场景下的图片资源加载。同时,在实现过程中需要注意的一些细节也被提及,有助于开发者更好地理解和...

    Android assets 和 res/raw 区别。读取本地网页,读取文本字体样式,读取视频。

    在Android应用开发中,`assets`和`res/raw`目录都是用来存储应用程序资源的重要部分,但它们之间存在一些关键区别。这两个目录都有各自的用途和访问方式,开发者需要根据实际需求来选择合适的存放位置。 首先,我们...

    Android读取Assert资源目录下数据库,数据库操作

    总之,在Android中从`assets`目录读取数据库涉及复制数据库文件、创建数据库帮助器、打开数据库并进行操作等步骤。通过这种方式,我们可以预先加载数据库,提供快速启动体验,或者在不联网的情况下使用预设的数据。...

    Android复制assets文件到SD卡

    本文将详细介绍Android复制assets文件到SD卡的方法,包括使用线程池和AssetManager类来实现文件复制。 一、使用线程池实现文件复制 在Android应用程序中,我们可以使用线程池来实现文件复制,以避免UI线程的阻塞。...

    android 读取 assets 文件夹下的音频

    在Android开发中,有时我们需要在应用内部存储一些资源文件,如音频、文本或图片,而`assets`文件夹就是用于存放这些非编译型资源的一个特殊目录。在本例中,我们将探讨如何从`assets`文件夹中读取音频文件,并提供...

    android获取assets内容

    在Android开发中,`assets`目录是一个特殊的地方,开发者可以将非资源文件(如文本、配置文件、数据库等)放入其中。这些文件不会被编译为应用的资源,但可以在运行时通过`AssetManager`访问。本文将详细介绍如何在...

    Android 加载assets文件夹的文本文件 图片

    - 文件路径:在`AssetManager`中,文件路径是相对于`assets`目录的,不需要包含`assets/`前缀。 - 错误处理:当文件不存在或读取过程中出现错误时,务必捕获并处理`IOException`。 - 资源释放:读取完成后,记得...

    android导入外部的数据库sqlite

    android应用,将外部的sqlite数据库导入到应用的私有空间中,源db文件置于assets目录下,如果源文件大小超过1M,使用Filesplit分割为不超过1M的小文件,那么就将所有分小文件置于assets目录下,本工程里已带...

    android复制数据库到SD卡打开加载listview

    1. **复制数据库到SD卡**: - 在AndroidManifest.xml中添加写SD卡的权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` - 在应用启动或需要时,使用以下代码将...

Global site tag (gtag.js) - Google Analytics