【发布时间】:2015-01-12 09:58:56
【问题描述】:
我在 Android Studio 的 Sqlite 中使用 openOrCreateDatabase 保存了一个数据库。我知道它保存在 Android 设备的根文件夹中(特别是数据/数据),但我看不到原始数据库文件。
我在 Studio 中尝试了 adb shell 命令和 Android 设备管理器,但看不到它。
有没有办法在不root手机的情况下更改数据库的路径或访问data/data中的数据库?
【问题讨论】:
我在 Android Studio 的 Sqlite 中使用 openOrCreateDatabase 保存了一个数据库。我知道它保存在 Android 设备的根文件夹中(特别是数据/数据),但我看不到原始数据库文件。
我在 Studio 中尝试了 adb shell 命令和 Android 设备管理器,但看不到它。
有没有办法在不root手机的情况下更改数据库的路径或访问data/data中的数据库?
【问题讨论】:
你不能在没有root设备的情况下访问数据文件夹。
但您可以将数据库从数据文件夹复制到 SD 卡,例如下载文件夹
File backupDB = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "Database.db");
File currentDB = context.getDatabasePath(DATABASE_NAME);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
你也需要权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
【讨论】:
src 它是原始数据库的输入流,dst 它是数据库新副本的输出流 3. 不明白 4. 它只是从应用程序复制您的数据库。到一些存储没有别的。
要查看应用程序数据文件夹中的内容,您可以使用run 命令和as,如下所示
adb shell
$ run-as package.name
现在您将可以访问指定应用程序的数据文件夹。
【讨论】: