我无法在我的设备上查看或拉取我的应用程序创建的SQLite数据库文件。
以下是我尝试使用ADB拉取它的方法
E:\>adb pull /data/data/com.example.testinglist/databases/timetracker.db
failed to copy '/data/data/com.example.testinglist/databases/timetracker.db' to
'./timetracker.db': **Permission denied**
如您所见,存在权限被拒绝错误。
我无法在Eclipse ADT中使用FileExplorer查看或复制文件。只能将文件夹数据复制为无法在FileExplorer中的文件夹中移动。和文件夹使用FileExplorer复制到计算机的数据为空。请问任何解决方案?
答案 0 :(得分:0)
如果您的设备没有根,您可以使用此代码将您的应用数据库导出到您的SD卡上:
try {
File dstDb = new File(dstPathOnSdcard, dstFileName);
FileOutputStream output = new FileOutputStream(dstDb);
File srcDb = new File(Environment.getDataDirectory(), "//data//com.mynamespace.myapp//databases//mydatabasename.db");
FileInputStream input = new FileInputStream(srcDb);
FileChannel src = input.getChannel();
WritableByteChannel dst = Channels.newChannel(output);
src.transferTo(0, src.size(), dst);
src.close();
input.close();
dst.close();
output.close();
}
catch (Exception e) {
// doSomething
}
答案 1 :(得分:0)
我就是这样做的(在没有root的ubuntu机器上):
运行以下代码,将Sqlite数据库从app拉到SD卡:
./ adb -d shell" run-as com.example.name.myappname cp /data/data/com.example.name.myappname/databases/database.db / sdcard / database。分贝" 强>
*确保替换" database.db"和" com.example.name.myappname",通过您的数据库名称和应用名称(在清单中找到)。
运行以下代码,将Sqlite数据从SD卡拉到桌面:
./ adb -d pull /sdcard/database.db~ / Desktop / database.db