2

アプリケーションを作成していますが、ルートを確認するのに間に合うようになり、「ルートの確認」ボタンを押すたびにフリーズします。何か案は?

「ルートのチェック」コードは次のとおりです。

Process p;
        try {
            // Perform SU to get root privileges
            p = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(p.getOutputStream());
            os.writeBytes("remount rw");
            os.writeBytes("echo Root Test > /system/rootcheck.txt");
            os.writeBytes("exit\n");
            os.flush();

            try {
                p.waitFor();
                    if (p.exitValue() != 255){
                        //Phone is rooted
                        Toast.makeText(getApplicationContext(), "Your device is rooted\r\n\r\n(Long Press to know how to get root acess)", 0).show();
                        break;
                    }
                    else {
                        //Phone is not rooted
                        Toast.makeText(getApplicationContext(), "Your device is not rooted\r\n\r\n(Long Press to know how to get root acess)", 0).show();
                        break;
                    }
            } catch (InterruptedException e) {

            }
        } catch (IOException e) {

        }
4

1 に答える 1

1

「このwaitFor() オブジェクトに関連付けられたネイティブ プロセスが実行を終了するまで、呼び出しスレッドを待機させます。」SDK仕様ごと。suroot アクセス権がないため、コマンドが完了しないようです。

おそらく、合理的な期間 (ここwait(long ms)に文書化されています) を使用して、プロセスが正常に完了したか (root を持っている)、またはタイムアウトになったか (root を持っていない) をテストしたいだけかもしれません。

于 2013-07-17T13:53:55.700 に答える