Android在后台执行SU命令?

时间:2013-04-14 18:45:14

标签: android service broadcast toast su

我正在编写一个Android应用程序来设置最大频率,调控器等。当屏幕关闭时。要做到这一点,我有一个服务运行接收屏幕开/关广播意图。当屏幕关闭事件触发时,我从共享首选项中读取并设置用户使用此功能设置的任何内容

public static void writeFile(String file, String content) {
    try {
        Process suProcess = Runtime.getRuntime().exec("su"); 
        DataOutputStream out = new DataOutputStream(suProcess.getOutputStream());
        out.writeBytes("echo '" + content + "' > '" + file + "'");
        out.flush();
        out.close();
    }
    catch (IOException e) {
        e.printStackTrace();
    }
} 

然后当屏幕重新打开时,我通过重写文件将系统恢复到以前的状态。一切都运转良好,按预期工作。

问题是我在开启/关闭屏幕时注意到一些延迟。此外,当我打开屏幕时,我看到来自SuperUser的Toast消息“App被授予su访问权限”,并且每次命令都会弹出一次。有没有办法隐藏那个吐司的消息?我没有找到任何方法来隐藏来自另一个活动的Toast消息。我知道他们可以在超级用户应用程序中禁用,但这并不理想。我读过你可以编写自己的超级用户二进制文件,但这听起来比简单的java编程更复杂......听起来也许会导致安全问题。

基本上我问的是最好的方法是什么,这样对于用户来说这是非侵入性的?

1 个答案:

答案 0 :(得分:0)

我没有使用su,但我想如果你每次只显示吐司一次就不关闭流。