运行 NanoHttpd 作为根

run NanoHttpd as a root

我想 运行 NanoHttpd 在 Android (KitKat 4.4) 设备上并将其绑定到端口 80。

我知道我只能以 root 用户身份绑定到端口 80。我的设备已被 root,我可以成功启动具有超级用户权限的进程,如下所示:

Process p = Runtime.getRuntime().exec("su");

这个 blog post 向我展示了如何使用 ProcessgetOutputStream() 方法编写文件。

不过,我想运行 NanoHttpd 内的root 进程。那可能吗?还是我只能使用 shell 命令?或者我可以从脚本启动我的应用程序吗?

您可以使用以下命令(具有超级用户权限)在脚本中启动您的应用程序:

am start -n your.package.name/.YourActivity

相应地替换 your.package.name.YourActivity

在java中使用root shell:

Process p = Runtime.getRuntime().exec("su");
DataOutputStream doutps = new DataOutputStream(p.getOutputStream());
doutps.writeBytes("yourcommand" + "\n");
doutps.flush();
doutps.writeBytes("exit\n");
doutps.flush();
p.WaitFor();
doutps.close();
try { p.destroy(); } catch(Exception ex) {}

同样,将 yourcommand 替换为您想要的命令。

您可以使用可以在根 shell 中使用的 任何 命令,无论该命令是什么以及它是如何构建的。如果您需要多个命令,只需为每个命令重复以下行:

doutps.writeBytes("yourcommand" + "\n");
doutps.flush();