重启手机

测试调用 :

execCommand(new String[]{"am broadcast -a android.intent.action.BOOT_COMPLETED"}, true,true);

方法:

/**
 * execute shell commands
 *
 * @param commands        command array
 * @param isRoot          whether need to run with root
 * @param isNeedResultMsg whether need result msg
 * @return if isNeedResultMsg is false, {@link CommandResult#successMsg} is null and
 * {@link CommandResult#errorMsg} is null.
 * 

*

* if {@link CommandResult#result} is -1, there maybe some excepiton. */ public static CommandResult execCommand(Object[] commands, boolean isRoot, boolean isNeedResultMsg) { int result = -1; if (commands == null || commands.length == 0) { return new CommandResult(result, null, null); } Process process = null; BufferedReader successResult = null; BufferedReader errorResult = null; StringBuilder successMsg = null; StringBuilder errorMsg = null; DataOutputStream os = null; try { process = Runtime.getRuntime().exec(isRoot ? COMMAND_SU : COMMAND_SH); os = new DataOutputStream(process.getOutputStream()); for (Object command : commands) { String strCommand = String.valueOf(command); if (strCommand == null) { continue; } // donnot use os.writeBytes(strCommand), avoid chinese charset error os.write(strCommand.getBytes()); os.writeBytes(COMMAND_LINE_END); os.flush(); } os.writeBytes(COMMAND_EXIT); os.flush(); result = process.waitFor(); // get command result if (isNeedResultMsg) { successMsg = new StringBuilder(); errorMsg = new StringBuilder(); successResult = new BufferedReader(new InputStreamReader(process.getInputStream())); errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream())); String s; while ((s = successResult.readLine()) != null) { successMsg.append(s).append(COMMAND_RESULT_SEPARATOR); } while ((s = errorResult.readLine()) != null) { errorMsg.append(s).append(COMMAND_RESULT_SEPARATOR); } } } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (os != null) { os.close(); } if (successResult != null) { successResult.close(); } if (errorResult != null) { errorResult.close(); } } catch (IOException e) { e.printStackTrace(); } if (process != null) { process.destroy(); } } return new CommandResult(result, successMsg == null ? null : successMsg.toString(), errorMsg == null ? null : errorMsg.toString()); }

CommandResult.java

public class CommandResult {
    public int result;
    public String successMsg;
    public String errorMsg;

    public CommandResult(int result, String successMsg, String errorMsg) {
        this.result = result;
        this.successMsg = successMsg;
        this.errorMsg = errorMsg;
    }
}

你可能感兴趣的:(重启手机)