Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在有根android设备上以编程方式运行ADB命令_Android_Command Line_Adb Shell_Cosu - Fatal编程技术网

如何在有根android设备上以编程方式运行ADB命令

如何在有根android设备上以编程方式运行ADB命令,android,command-line,adb-shell,cosu,Android,Command Line,Adb Shell,Cosu,我需要在有根的android设备上以编程方式运行adb命令 以下情况不起作用,没有例外,只是不起作用: Process process = Runtime.getRuntime().exec(command); process.waitFor(); 另外,如果我想以特定的用户角色运行命令,如何执行它?您可以使用以下方法: Process p = Runtime.getRuntime().exec( "su" ); DataOutputStream os = new DataOutputStre

我需要在有根的android设备上以编程方式运行adb命令

以下情况不起作用,没有例外,只是不起作用:

Process process = Runtime.getRuntime().exec(command);
process.waitFor();
另外,如果我想以特定的用户角色运行命令,如何执行它?

您可以使用以下方法:

Process p = Runtime.getRuntime().exec( "su" );
DataOutputStream os = new DataOutputStream(p.getOutputStream());
os.writeBytes(command1 + "\n");
os.writeBytes(command2 + "\n");
os.writeBytes("exit\n");
os.flush();
由于您的设备是根设备,您必须使用
su
命令为根设备使用命令。我使用这个解决方案从我们的应用程序中重新启动我们的根设备,它成功了。您可以添加代码中显示的多个命令。希望它能起作用

更新:

您也可以使用命令数组。像这样:

Process proc = Runtime.getRuntime()
              .exec(new String[] { "su", "-c", command1,command2,"exit" });
proc.waitFor();
如果需要,也可以使用额外的exec命令:

Runtime runtime = Runtime.getRuntime();
runtime.exec("su");
runtime.exec("export LD_LIBRARY_PATH=/vendor/lib:/system");
runtime.exec("pm clear "+PACKAGE_NAME);

这个样品也可以,我以前用过

我想回答您的问题的第二部分,即如何作为特定用户角色运行命令?为此,您可以使用以下内置于android中的Linux命令

run-as : Usage:
    run-as <package-name> [--user <uid>] <command> [<args>]

请简要说明这段代码的作用。@Keivanebati感谢您的提醒。我编辑了这篇文章。你不需要像p.exec()一样执行这个过程吗@普拉提提:没必要。在exec中使用su命令时,shell将成为进程。因此,它将接受所有新命令。但我为不同的情况添加了另一个示例。@ckaraboran,我按照您的指导进行了尝试,我遇到了这个错误,请检查无法运行程序“su”:错误=13,权限被拒绝,我需要在Android应用程序中执行ADB shell命令。接受你的建议。
run-as com.example.root.app --user u0_a86 env