我有以下代码段:
..
..
..
Process proc = runTimeObject.exec(new String[]{"su"});
System.out.println("0");
DataOutputStream outputStream = new DataOutputStream(proc.getOutputStream());
//String Sql = "sqlite3 -csv /data/data/com.whatsapp/databases/msgstore.db \"SELECT * FROM messages WHERE status<>13 AND key_from_me=0;\" > /data/test.csv";
String Sql = "sqlite3 -csv /data/data/com.whatsapp/databases/msgstore.db \"SELECT m._id, m.key_remote_jid, m.data, m.media_wa_type, m.media_name FROM messages m, chat_list cl WHERE m.key_remote_jid = cl.key_remote_jid AND m.key_from_me=0 AND cl.unseen_message_count>0 AND m._id>COALESCE(cl.last_read_message_table_id, 0);\"";
System.out.println("1");
if (outputStream != null){
System.out.println("2");
outputStream.writeBytes(Sql);
outputStream.flush();
System.out.println("3");
outputStream.writeBytes("exit\n");
outputStream.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line;
while((line = in.readLine()) != null) {
System.out.println(line);
System.out.println("4");
}
System.out.println("5");
}
System.out.println("6");
try {
proc.waitFor();
...
...
...
while循环显示所有选定的数据,但程序挂起并且不向前(我没有看到5)。我是java和Android的新手,不知道我是如何解决这个问题的。请帮帮我
答案 0 :(得分:1)
您是否在主线程上运行了长时间运行的任务?如果您阻止主线程超过几毫秒,您的应用程序将被终止。 尝试使用AsyncTask在后台运行任务。
答案 1 :(得分:0)
问题解决了,我忘记了&#39; \ n&#39;在select命令的末尾。