我编写了一个在 Android 4.4 Kitkat 设备上的自定义内核上运行的 Android 应用程序,它使用 Android 串行端口 API ( https://code.google.com/p/android-serialport-api/ ) 来打开串行端口“/dev/ttyACM0”是与我的串行设备关联的端口。该端口具有适当的“666”权限(crw-rw-rw),应用程序本身甚至具有 WRITE_EXTERNAL_STORAGE”权限。
但是,即使权限看起来正确,当我的应用程序尝试使用库打开所述串行端口时,它也会失败。在我的 java 代码中,如果我尝试执行“device.canWrite()”,它返回 false,而“device.canRead()”返回 true。我觉得这是更大权限问题的症状。
如果我使用与串行端口 api/library 捆绑在一起的示例 apk,我会遇到同样的问题,应用程序在 device.canWrite() 上失败并抛出 SecurityException。
当在自定义内核 ICS 设备上运行时,完全相同的代码确实成功运行并打开,应用程序最初是为该设备开发的。然而,两者的内核都是由同一个开发人员编写的,至少从表面上看,端口的权限似乎是一样的。
这可能是我可以在应用程序代码方面解决的问题吗?我尝试了一些其他的串口库(USBSerial3.0,usb-serial-for-android-master),我似乎遇到了同样的问题。
不管问题出在哪里,有人会知道问题可能出在哪里吗?对内核、应用程序和 API 进行更改都摆在桌面上。谢谢你。