我已经阅读了有关此问题的其他问题,但没有人回答这个问题,所以请不要将此标记为重复。
现在我使用以下代码访问其他应用程序的数据库。
Process process = null;
Runtime runtime = Runtime.getRuntime();
OutputStreamWriter outputStreamWriter;
try {
String command = dbName + " " + "'" + query + "'" + ";";
process = runtime.exec("su");
outputStreamWriter = new OutputStreamWriter(process.getOutputStream());
outputStreamWriter.write("sqlite3 " + command);
outputStreamWriter.flush();
outputStreamWriter.close();
outputStreamWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
然后使用BufferedReader我可以逐行读取输出。这种方法的问题是我无法读取复杂的数据类型,如BLOB。
所以我的问题是如何从root用户的另一个应用数据库中读取这些复杂的数据类型。 一个选项可以是将sqlite数据库复制到sdcard,从中读取数据并将其移回,但这涉及不必要的数据库复制。除此之外还有更好的方法吗? 感谢。