5

我有一个非常具体的问题。

首先让我解释一下我要做什么,然后是问题所在。

基本上我要做的是将现有的 .db 数据库文件存储在assets文件夹中,然后在安装后我想将 .db 文件从 assets 复制到 Android 中的默认数据库位置。类似于此页面的答案 [link] How to use an existing database with an Android application

问题对于我无法访问的无根设备/data/data/<<package name folder>>。在这种情况下,数据库文件存储在哪里。换句话说,我想将文件从资产复制到数据库的应用程序默认位置,DB_PATH = "/data/data/" + context.getPackageName() + "/databases/"以防根设备。无根设备是否也一样。

4

3 回答 3

9

是的,对于这两种情况,这将是相同的路径。/data/data/<application_package_name>/databases

现在,在无根设备上,您无法访问/data/设备内部存储的目录。这就是为什么您看不到数据库文件的原因。

如果要获取文件,可以将数据库文件从内部存储复制 /data/data/<application_package_name>/databases到外部存储(SD 卡),然后使用ddmsadb pull获取数据库文件。

也只需尝试adb pull /data/data/<application_package_name>/databases/<database_file_name>系统中的命令来获取数据库文件。

但默认情况下,所有 android 应用程序存储数据库都在内部存储路径上/data/data/<application_package_name>/databases。它适用于所有有无根的设备。

于 2013-03-10T19:25:37.403 回答
8

根据http://developer.android.com/reference/android/content/Context.html#getDatabasePath(java.lang.String)上的 Android 文档,您应该使用 context.getDatabasePath。

为我工作:

File dbFile = context.getDatabasePath(name_of_database_file);
于 2014-02-20T20:03:50.003 回答
0

默认情况下,Android 将其 SQLite 数据库存储到以下链接,您可以在该链接中使用shell命令提示符访问您的.db文件,以使用 chmod 获取所有者访问权限以获得读取或写入权限。

String DATABASE_PATH = "/data/data/" + PACKAGE_NAME + "/databases/" + DATABASE_NAME;

Where:
String DATABASE_NAME = "your_dbname";
String PACKAGE_NAME = "com.example.your_app_name";

有关更多详细信息,您可以查看以下链接。点击这里

于 2017-02-21T05:59:00.447 回答