我正在为我的一个 android 程序开发诊断工具。
从本质上讲,如果用户遇到问题,我想将 SQLite dump
(参考:http ://www.sqlite.org/sqlite.html )之类的东西放入一个字符串中,然后我可以通过电子邮件发送它。
有谁知道是否有一种简单的方法可以从 android 程序中执行此操作,或者我是否要与 android 操作系统交互并以这种方式运行命令?
我解决了自己的问题,将数据库转储到文件中,然后将文件读入字符串。对于那些感兴趣的人,以下内容为您提供了总体思路:
String dbPath = "/data/data/com.company.project/databases/project.db";
String outputPath = "/data/data/com.company.project/databaseDump.txt";
Process proc = Runtime.getRuntime().exec("sqlite3 " + dbPath + " '.dump' > " + outputPath);
proc.waitFor();
returnString = FileUtil.getStringFromFile(outputPath);
美东时间
所以上面有问题,我没有看到,因为我是SQLite3
从 adb 运行命令的。
看起来SQLite3
是您可以从 运行的命令adb
,但不一定在手机上。基于此,我采取了不同的方法。我使用 android 的 DatabaseUtils 来帮助我构建我需要的结果,例如DatabaseUtils.dumpCursorToString(cursor)
. 我对我感兴趣的每个表都这样做了,并构建了一个返回字符串。