gpt4 book ai didi

android - 以编程方式更改android中tty端口的权限和所有权

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:16:55 34 4
gpt4 key购买 nike

我需要更改/dev/tty* 文件的权限,因为我正在该端口上写入数据。我可以通过以 root 身份输入 adb shell,从 Windows 命令提示符更改权限。

但是当我重新启动设备时,权限不会保留。相反,它们被设置为默认值。

因此,每次我需要在重启后运行我的应用程序时,我都需要更改权限。

我尝试使用 Runtime.exec() 方法从应用程序运行 adb 命令,但这不会改变任何内容,因为该应用程序无权更改文件所有权权限。

这就是我从应用程序执行命令的方式(在本例中是在模拟器中测试的):

Process process =   Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
os.writeBytes("chown root:root /dev/ttyS0 \n");
os.writeBytes("chmod 777 /dev/ttyS0 \n");
os.writeBytes("exit\n");
os.flush();
os.close();
process.waitFor();

当执行“su”命令时,它给出错误 su: uid 10044 not allowed to su
因此,在执行 chown 或 chmod 时会出现错误 Unable to chmod Operation Not permitted

那么,我该如何更改该文件的权限和所有权?

非常感谢任何帮助!

谢谢!!

最佳答案

默认(来自 Google AOSP source )su 二进制检查正在运行的 UID。只允许 rootshell 用户运行 su。除非安装不检查 UID 的修补 su 二进制文件,否则您将无法从应用程序运行 su

adb root 命令所做的就是在设备上执行以下命令:

setprop service.adb.root 1
stop adbd
start adbd

但我肯定你在这里问错了问题。 su 命令没有理由不能满足您的需求。

更改 tty 设备权限应执行的命令是:

Runtime.getRuntime().exec("su 0 chmod 777 /dev/ttyS0");

同样在 android 中,.chown 命令中用作用户和组字段之间的分隔符,而不是 :。正确的命令是:

su 0 chown root.root /dev/ttyS0

另一个常见的错误是尝试使用标准的 Linux su 选项,例如 -csu 的 AOSP 版本要简单得多:

usage: su [UID[,GID[,GID2]...]] [COMMAND [ARG...]]

Switch to WHO (default 'root') and run the given command (default sh).
where WHO is a comma-separated list of user, group,
and supplementary groups in that order.

关于android - 以编程方式更改android中tty端口的权限和所有权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14750459/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com