栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android 10 应用层如何操作设备节点/sys/devices

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 10 应用层如何操作设备节点/sys/devices

功能:应用层去访问驱动给的一个设备节点
1、在init.uis8581a2h10.rc文件中添加该设备的权限

on post-fs-data
    setprop fpga.target.enable 1
    setprop debug.delaytime.min 10
    setprop debug.delaytime.mid 100
    setprop debug.delaytime.max 1000
    setprop debug.android_watchdog.disable 1
	
	chmod 666 /sys/devices/virtual/power_state
    chmod 666 /sys/devices/virtual/tunetoch

验证是否添加成功:
整编译软件在out目录下面搜索该文件:find -name init.uis8581a2h10.rc,如果该文件中存在添加加节点的代码,那就说明添加成功了
2、应用层向该设备节点写入值

public static final String FM_POWER_PATH = "/sys/devices/virtual/power_state";
public static final String FM_TUNETOCH_PATH = "/sys/devices/virtual/tunetoch";
private void setFmOn() {
   String frequency = getFmFrequency();
   if(DEBUG) Log.i(TAG, "setFmOn() frequency = " + frequency);
   try {
      Writer fm_tunetoch = new FileWriter(FM_TUNETOCH_PATH);
      fm_tunetoch.write(frequency);
      fm_tunetoch.flush();
      fm_tunetoch.close();
      if (!isFmOn()) {
         Writer fm_power = new FileWriter(FM_POWER_PATH);
         fm_power.write(FM_ON);
         fm_power.flush();
         fm_power.close();
      }

   } catch (IOException e) {
      Log.i(TAG, "setFmOn()   IOException e = "+e.getMessage());
      e.printStackTrace();
   }
   }
}

这样写入值出现问题点如下:
应用层往设备节点写值出现了没有权限问题,日志如下

IOException e = /sys/devices/virtual/tunetoch: open failed: EACCES (Permission denied)

解决方法:
方法1、关闭selinux
方法2、添加权限
代码路径:
device/sprd/sharkl3/common/sepolicy/platform_app.te
device/sprd/sharkl3/common/sepolicy/file.te
device/sprd/sharkl3/common/sepolicy/file_contexts
在platform_app.te文件中添加如下

allow platform_app sysfs_fm:file {getattr open write read};

在file.te文件添加自己自定义的文件名,并给予文件类型

type sysfs_fm, fs_type,sysfs_type;

在file_contexts文件中让代码中的节点与自定义文件名关联 [u:object_r表示当前用户 s0表示等级,最低权限等级]

/sys/devices/virtual//power_state     u:object_r:sysfs_fm:s0
/sys/devices/virtual//tunetoch     u:object_r:sysfs_fm:s0

备注说明:在添加权限过程中,缺什么权限就补什么权限

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331881.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号