我正在尝试从已添加到 AOSP (7.1.1) 的系统/priv-app 运行 shell 命令
我尝试运行的命令是:ip link add dev can0 type can 以打开 can 总线。
我已经将图像构建为 -engstrong> 和 -userdebug 版本。 该命令在 adb shell 中运行良好,并按预期成功打开 CAN 总线。
我的问题是出现以下错误:
Cannot run program "su": error=13, Permission denied
当我在系统特权 java 应用程序中尝试以下代码时:
//ArrayList<String> commands is passed into the method
try {
if (null != commands && commands.size() > 0) {
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
for (String currCommand : commands) {
os.writeBytes(currCommand + "\n");
os.flush();
}
os.writeBytes("exit\n");
os.flush();
BufferedReader stderr = new BufferedReader(new InputStreamReader(suProcess.getErrorStream()));
String line = "";
String errString = "";
while ((line = stderr.readLine()) != null) errString += line + "\n";
suProcess.waitFor();
if (suProcess.exitValue() != 0)
throw new Exception(errString);
} //Handle exception
最佳答案
你可以这样尝试:
Process mProcess = new ProcessBuilder()
.command("/system/xbin/su")
.redirectErrorStream(true).start();
DataOutputStream out = new DataOutputStream(mProcess.getOutputStream());
关于android - 从 priv-app 应用程序运行 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46470552/