经常我们需要使用一些事先做好内容的数据库,比如字典等, 这就要加载已有的数据库文件,通常把它们放在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过程。
目前我测试了读操作,写操作还有待测试。
分享到:
相关推荐
2. **复制数据库文件**:在`SQLiteOpenHelper`的子类中,创建一个方法用于从`assets`目录复制数据库文件到`databases`目录。这里需要用到`Context`对象,可以通过`getApplication()`或者`getApplicationContext()`...
在AndroidManifest.xml文件中,确保添加了读写外部存储的权限,即使`assets`中的文件不直接涉及外部存储,但在复制数据库到应用私有目录时可能需要这一权限。 6. **异常处理** 在处理数据库操作时,需要对可能...
综上所述,通过以上步骤和知识点,我们可以实现从`android:assets`目录将资源文件复制到SD卡的功能。这个过程涉及Android系统的文件操作、权限管理以及对AssetManager的使用,对于Android开发者来说是非常基础且重要...
在Android开发中,有时我们需要将应用内部的资源文件,如配置文件、数据库文件或静态数据等,复制到手机的外部存储(内存或SD卡)以便于应用运行时使用。这个过程通常涉及到Android的文件系统操作和权限管理。下面将...
在main文件夹下新建assets文件,然后再assets文件中新建namelist.json文件夹,将json数据复制到test.json文件中。 2、访问json文件 try { AssetManager assetManager = getAssets(); // 获得assets资源管理器...
5. **调用复制方法**:在应用启动时调用上面定义的`copyFileFromAssetsToPath()`方法,将数据库文件从assets复制到目标路径。 ```java if (!copyFileFromAssetsToPath(context, "myDatabase.db", targetPath)) { /...
方舟游戏框架,一个 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`目录读取数据库涉及复制数据库文件、创建数据库帮助器、打开数据库并进行操作等步骤。通过这种方式,我们可以预先加载数据库,提供快速启动体验,或者在不联网的情况下使用预设的数据。...
本篇文章将详细介绍如何在Android应用程序中从assets目录下获取ini文件的内容,并实现对指定内容的读取。 首先,让我们了解一下Android项目的assets目录。这是一个特殊的位置,允许开发者放置任何静态资源文件,...
Android从assets和res中读取文件 Android中的资源文件夹主要有两个:res和assets。res文件夹用于存放编译后的资源文件,而assets文件夹用于存放原始文件。下面我们将详细介绍这两个文件夹的作用和如何从中读取文件...
这段代码定义了一个名为`AssetsDatabaseManager`的类,它包含初始化方法`initManager`和用于从`assets`复制数据库的`copyDatabaseFromAssets`方法。初始化时,检查目标数据库文件是否存在,若不存在,则从`assets`...
通过上述介绍,我们了解到如何在Android应用程序中从`assets`文件夹获取图片的方法。这种方法简单实用,适用于多种场景下的图片资源加载。同时,在实现过程中需要注意的一些细节也被提及,有助于开发者更好地理解和...
在Android应用开发中,`assets`和`res/raw`目录都是用来存储应用程序资源的重要部分,但它们之间存在一些关键区别。这两个目录都有各自的用途和访问方式,开发者需要根据实际需求来选择合适的存放位置。 首先,我们...
本文将详细介绍Android复制assets文件到SD卡的方法,包括使用线程池和AssetManager类来实现文件复制。 一、使用线程池实现文件复制 在Android应用程序中,我们可以使用线程池来实现文件复制,以避免UI线程的阻塞。...
在Android开发中,有时我们需要在应用内部存储一些资源文件,如音频、文本或图片,而`assets`文件夹就是用于存放这些非编译型资源的一个特殊目录。在本例中,我们将探讨如何从`assets`文件夹中读取音频文件,并提供...
在Android开发中,`assets`目录是一个特殊的地方,开发者可以将非资源文件(如文本、配置文件、数据库等)放入其中。这些文件不会被编译为应用的资源,但可以在运行时通过`AssetManager`访问。本文将详细介绍如何在...
- 文件路径:在`AssetManager`中,文件路径是相对于`assets`目录的,不需要包含`assets/`前缀。 - 错误处理:当文件不存在或读取过程中出现错误时,务必捕获并处理`IOException`。 - 资源释放:读取完成后,记得...
android应用,将外部的sqlite数据库导入到应用的私有空间中,源db文件置于assets目录下,如果源文件大小超过1M,使用Filesplit分割为不超过1M的小文件,那么就将所有分小文件置于assets目录下,本工程里已带...
1. **复制数据库到SD卡**: - 在AndroidManifest.xml中添加写SD卡的权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` - 在应用启动或需要时,使用以下代码将...