android - 从 priv-app 应用程序运行 shell 命令

标签 android shell android-source

我正在尝试从已添加到 AOSP (7.1.1) 的系统/priv-app 运行 shell 命令

我尝试运行的命令是:ip link add dev can0 type can 以打开 can 总线。

我已经将图像构建为 -eng-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/

相关文章:

android - 使 LinearLayout 可滚动并保留标题栏

android - Gradle 无法使用 JCenter 构建(使用 Unity + Firebase)

java - 在 Android 的 BroadcastReceiver 中检查 resultCode?

android - 如何着手在 Android 操作系统中制作全局底部表

android - 构建具有受限应用程序安装访问权限的 AOSP 7

android - 如何为 Google Map Api V2 Android 实现搜索功能?

bash - 反向视频似乎不起作用

linux - 加载参数化的数据文件

linux - #!/bm/bash 和 #!/bin/sh 之间的 shell 编程区别

android - 如何听dev/binder?