运行Shell命令,虽然在Android的Java code? [英] Running Shell commands though java code on Android?
问题描述
我有一个应用程序,是应该使用一些shell命令,从SD卡到/系统/媒体/复制文件。这将需要root,而我正在测试一个根深蒂固的设备上。我使用运行时执行shell命令,但它不工作。 以下是我已经得到了我的运行时间
I've got an app that's supposed to use some shell commands to copy a file from the sdcard to /system/media/. It will require root, and I am testing on a rooted device. I'm using runtimes to execute the shell commands, but it's not working. Here's what I've got for my runtimes
public void RunAsRoot{String[] commands = {"sysrw", "rm /data/local/bootanimation.zip", "sysro"};{
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
for (String tmpCmd : commands) {
os.writeBytes(tmpCmd+"\n");
}
os.writeBytes("exit\n");
os.flush();
}
但我的logcat只能说明他们两个人没有得到拒绝
But my logcat only shows two of them not getting rejected
07-30 03:14:11.112: WARN/su(3593): request rejected (10047->0 /system/bin/sh)
07-30 03:14:11.132: DEBUG/su(3592): 10047 com.bba.stormdroid executing 0 /system/bin/sh using shell /system/bin/sh : sh
07-30 03:14:11.152: WARN/su(3594): request rejected (0->0 /system/bin/sh)
07-30 03:14:11.182: WARN/su(3595): request rejected (0->0 /system/bin/sh)
07-30 03:14:11.202: WARN/su(3596): request rejected (0->0 /system/bin/sh)
07-30 03:14:11.242: DEBUG/su(3597): 10047 com.bba.stormdroid executing 0 /system/bin/sh using shell /system/bin/sh : sh
这两个看起来是sysrw和sysro命令,但该应用程序仍然要求root权限,当我触发此code。 我是新来以root的东西的工作,我似乎无法找出如何得到这个工作。
Those two look to be the sysrw and sysro commands, yet the app still asks for root permission when I trigger this code. I'm new to working with root stuff and I can't seem to figure out how to get this to work.
推荐答案
要运行root的命令,你必须使用flllowing格式为:
To run root commands, you have to use the flllowing format:
public void RunAsRoot(String[] cmds){
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
for (String tmpCmd : cmds) {
os.writeBytes(tmpCmd+"\n");
}
os.writeBytes("exit\n");
os.flush();
}
在这里你传递一个字符串数组,每个字符串是必须执行的命令。例如:
where you pass in an array of strings, each string being a command that needs to be executed. For example:
String[] commands = {"sysrw", "rm /data/local/bootanimation.zip", "sysro"};
这篇关于运行Shell命令,虽然在Android的Java code?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!