android 应用程序中 sqlite 数据库的位置应该是什么?

What should be the location of sqlite database in android application?

目前,我正在开发一个android应用程序,它会在打开后立即从服务器下载sqlite数据库。我必须在应用程序中非常频繁地使用这个数据库文件,并且必须经常从这个数据库文件中获取数据。那么,这个数据库在手机中的正确位置或目录应该是什么,这样我才能有效地读/写这个数据库文件。

默认情况下,新创建的数据库存储在:

//data/data/<Your-Application-Package-Name>/databases/<your-database-name>

但是这个文件夹在非 root 设备上是无法访问的。通过 Internet 传输数据库存在安全风险,但如果绝对必要,您可以像这样修改 MySQLiteOpenHelper 构造函数:

public class MySQLiteOpenHelper extends SQLiteOpenHelper {
    MySQLiteOpenHelper(Context context) {
       super(context, "/mnt/sdcard/<your-app-name>/database_name.db", null, 0);
}

}

通过这样做,您将数据库存储在 SD 卡上的一个文件夹中。

请记住,通过使用此方法,您需要额外的权限才能在 manifest.xml:

中写入外部存储
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

您可以在此处找到更多信息和示例:Location of sqlite database on the device