su在adb和program

时间:2016-11-01 00:31:13

标签: android root superuser

我有自定义设备android 4.3。某些命令出现问题,例如:

su -c 'pm enable com.android.systemui'

当我在adb上运行此命令时,它可以工作。但是,当我使用this库以编程方式运行代码时,它只是不起作用,也没有显示错误。

有趣的观察:

Shell.SU.available() : false
Shell.SU.isSELinuxEnforcing() : false

1 个答案:

答案 0 :(得分:0)

好的,所以设备扎根了。您尝试使用该库执行该命令的任何原因?

我想说的是为什么你不能自己运行shell命令?

runRootCommand方法:

static boolean runRootCommand(String command) {
    boolean status = true;
    DataOutputStream os = null;

    try {
        Process process = Runtime.getRuntime().exec("su");
        os = new DataOutputStream(process.getOutputStream());
        os.writeBytes(command + "\n");
        os.writeBytes("exit\n");
        os.flush();
        process.waitFor();
    } catch (IOException | InterruptedException e) {
        Log.e(TAG, e.toString());
        status = false;
    } finally {
        try {
            if (os != null)
                os.close();
        } catch (IOException e) {
            Log.e(TAG, e.toString());
            status = false;
        }
    }
    return status;
}

然后像这样调用这个方法:

boolean success = runRootCommand("pm enable com.android.systemui");

if(success) {
    // command was successful
} else {
    // command was NOT successful
}

这将运行命令为" su" (超级用户)。 希望这会有所帮助。