【问题标题】:RunTime.exec does not return errors from the processRunTime.exec 不从进程返回错误
【发布时间】:2017-03-28 13:59:21
【问题描述】:

我必须开发一个从 whatsapp 数据库读取消息的应用程序。

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void sendMessage(View view){
        try{
            Process p = Runtime.getRuntime.exec(new String[] {"sqlite3", 
                "/data/data/com.whatsapp/databases/msgstore.db", 
                "select * from messages;"});
        }
        catch(Exception e){
            textView4.setText(e.getMessage());
        }
    }
}

只有当我使用 sqlite3 出错时(例如 sqlite34 而不是 sqlite3),才会出现错误。但是当我在其他语句中出错时(例如用数据库代替数据库),就不会出现错误。这意味着 exec 只会触发第一个语句,其他两个语句不会被触发。

【问题讨论】:

    标签: android process sqlite exitstatus


    【解决方案1】:

    exec() 在成功启动该进程时成功。

    要找出sqlite3进程的返回值,你必须使用Process对象到wait使其结束,然后读取它的exit value

    【讨论】:

    • 非常感谢您的回答,非常有帮助。我有另一个问题。为了在 com.whatsapp/databases 中插入数据,我需要 root 权限,我应该怎么做?我试过了:rt.exec(new String[]{"su", "sqlite3", "/data/data/com.whatsapp/databases/msgstore.db", "insert ....."});并在清单数据中: 但它不起作用。您可能知道吗?再次感谢您
    • 这不是论坛。要提问,请点击“”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    相关资源
    最近更新 更多