我开发了一个监听串口的应用程序,我一直在使用“chmod 666 / dev / ttyS0”对串口进行读/写访问 - 但是 - 这个方法依赖于“su”而且是只是暂时的。
需要做些什么才能永久地获得对串行端口的读/写访问权限?
答案 0 :(得分:5)
不幸的是,您总是需要超级用户/ root用户才能在COTS硬件上执行此操作(但是大多数现成的Android设备都没有可访问的串行端口)。
如果您控制设备固件/ ROM,则可能会进行其他安排,以便init.rc文件设置串行设备的所有权,以便只有您的应用程序可以访问,但这似乎比可能需要的更难
您最好的选择是要求使用root设备,并且您的应用每次打开前都需要在串行设备文件上设置权限。如果您的手机安装了su app(这是根植Android设备的典型设置),那么您的应用可以轻松自动执行此操作。当应用程序第一次尝试执行此操作时,用户将获得一个确认对话框,但他们可以选中一个框以便记住允许的决定。
在root设备上,您应该可以执行以下操作:
try {
Runtime.getRuntime().exec("su -c 'chmod 666 /dev/ttyS0'");
} catch (IOException e) {
e.printStackTrace();
}
答案 1 :(得分:1)
也许这可以帮助别人。
答案 2 :(得分:0)
我认为你的意思是USB上的虚拟串口?我知道的任何Android设备上都没有物理串口。
关于你的问题:你做不到。普通(非root)设备上的应用程序为sandboxed,并且没有调用chmod
等系统命令的权限。