unrooted设备的Android应用程序的默认数据库位置是什么?是否与root用户相同?

use*_*794 5 installation android rooted-device installation-path

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

首先让我解释一下我想要做什么,然后解决问题.

基本上我要做的是将现有的.db数据库文件存储在assets文件夹中,然后在安装后我想将.db文件从资产复制到Android中的默认数据库位置.与此页面类似的答案[link] 如何在Android应用程序中使用现有数据库.

问题对于无根设备我无法访问/data/data/<<package name folder>>.在这种情况下,数据库文件存储在何处.在其他方面,我想将资产从资产复制到数据库的应用程序默认位置DB_PATH = "/data/data/" + context.getPackageName() + "/databases/",如果是root用户设备.对于无根设备是否相同?

use*_*305 7

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

现在,在非root用户设备上,您无法访问/data/设备内部存储的目录.这就是你无法看到数据库文件的原因.

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

另外,只需adb pull /data/data/<application_package_name>/databases/<database_file_name>从系统中尝试命令即可获取数据库文件.

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


cja*_*cja 7

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

适合我:

File dbFile = context.getDatabasePath(name_of_database_file);
Run Code Online (Sandbox Code Playgroud)