首页 > 技术文章 > 关于mtk Android打开串口权限问题

rainey-forrest 2016-03-17 16:28 原文

最近在做一个测试串口读写回路的APK,jni代码部分遇到一个小小问题:

fd = open(path_utf, O_RDWR);
返回值是-1,要么就是权限问题,要么就是文件不存在
所以需要打印错误信息,所以继续打LOG:
if(fd == -1)
{
/*Throw an exception*/
LOGE("can not open serial port: %d,%s", baudrate, strerror(errno));
return NULL;
}
其中strerror为系统函数,errno为系统全局变量,其值就是最近一次系统读写操作的错误信息.

后来发现确实是权限问题,但是我已经chmod 666 /dev/ttyMT0

所以问题的关键来了:android为了防止用户获得root权限后,误操作引起的风险,特别设置一道关卡用来控制用户的读写操作.
setenforce 0,其中0表示关闭这道防护措施,1表示打开这道防护措施.

答案:需要在adb shell下执行命令 setenforce 0

推荐阅读