我有一个相当具体的问题。
首先让我解释什么,我试图做的,然后这个问题。
基本上,我试图做的是保存在文件夹中的资产在现有.db的数据库文件,然后安装后,我想从资产.db文件复制到Android的默认的数据库位置。 同样的事情也与此页的答案[链接] 如何使用现有的数据库与Android应用程序 。
问题对于无根的设备我不能访问/data/data/<<package name folder>>
。 在这种情况下的数据库文件被保存。 在其它术语我想从资产文件复制到数据库应用程序的默认位置是DB_PATH = "/data/data/" + context.getPackageName() + "/databases/"
中有根设备的情况下。 难道是无根设备相同。
是啊,对于这两种情况下,这将是相同的路径。 /data/data/<application_package_name>/databases
现在,联合国扎根设备上你不能访问/data/
设备的内部存储的目录。 这就是为什么你不能看到数据库文件。
如果你想,你可以从内部存储拷贝数据库文件的文件/data/data/<application_package_name>/databases
到外部存储设备(SD卡),然后使用DDMS或adb pull
得到数据库文件。
还只是尝试命令adb pull /data/data/<application_package_name>/databases/<database_file_name>
从系统中得到数据库文件。
但在内部储存空间路径默认所有的Android应用商店数据库/data/data/<application_package_name>/databases
。 而其适用于扎根所有设备或取消扎根 。
据当时的Android文档http://developer.android.com/reference/android/content/Context.html#getDatabasePath(java.lang.String) ,你应该使用context.getDatabasePath。
对我的作品:
File dbFile = context.getDatabasePath(name_of_database_file);
通过下面的链接,您可以通过使用命令提示符 外壳使用chmod读得到所有人访问或写权限访问您的.db文件默认的Android商店的SQLite数据库了这一点。
String DATABASE_PATH = "/data/data/" + PACKAGE_NAME + "/databases/" + DATABASE_NAME;
Where:
String DATABASE_NAME = "your_dbname";
String PACKAGE_NAME = "com.example.your_app_name";
欲了解更多详情,请查看以下链接。 点击这里
文章来源: What is the default database location of an android app for an unrooted device?? Is it same as for rooted one?