MTK Android串口权限配置

问题

Android11设备中添加串口应用,遇到打开串口时报错问题:
System.err: Caused by: java.io.IOException: error=13, Permission denied

解决步骤

  1. APP中加权限申请
    AndroidManifest.xml
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /
  1. 系统级应用
    AndroidManifest.xml添加android.uid.system
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:sharedUserId="android.uid.system"
    >

这里只介绍system应用配置,如果是普通应用,改法不一样。

  1. 配置selinux
    根据avc的提示来进行修改
    type=1400 audit(0.0:1182): avc: denied { read write } for name=“ttyS2” dev=“tmpfs” ino=12037 scontext=u:r:system_app:s0 tcontext=u:object_r:ttyS_device:s0 tclass=chr_file permissive=0

根据avc打印提示修改,不同的平台修改的地方不一样,这里介绍的是mtk平台
device/mediatek/sepolicy/basic/non_plat/system_app.te

# serial port
allow system_app ttyS_device:chr_file { open read write ioctl };
  1. 设备的权限
    由于板子对应mt6771,所以修改
    device/mediatek/mt6771/init.mt6771.rc
    添加
    chmod 0666 /dev/ttyS2
    不同型号cpu对应目录不同,且这步要改,否则会出现如下错误
    open() fd = -1
    Cannot open port
    native open returns null
    openSerialPort: 打开串口异常:java.io.IOException
    作者:帅得不敢出门

猜你喜欢

转载自blog.csdn.net/zmlovelx/article/details/129533557
MTK
今日推荐