当前位置: 首页 > news >正文

MTK Android9.0 给vendor下文件夹权限,用于读取文件列表

1.背景

最近在TV开发中遇到一个问题:如何判断设备烧录过HDCP KEY的问题,由于MTK的官方接口返回值并不准确,只能判断2.2是否烧录,不能准确判断1.4是否烧录过,因为HDCP 的KEY有两个,分别是1.4和2.2,为了兼容更多用户的设备,这两个文件都要烧录成功,MTK的接口如下:

if (MtkTvFApiSystemWrapper.getInstance().checkFile("vendor/tvcertificate/hdcp_key.bin")|| MtkTvFApiSystemWrapper.getInstance().checkFile("vendor/tvcertificate/hdcp2_key.bin")) {//  Toast.makeText(getActivity(), "HDCP KEY已烧录,请勿重复操作!", Toast.LENGTH_LONG);hasHdcpKey=true;}

为了能准确判断是否烧录了这两个文件,只能换其他方法,

后来经测试发现,烧录HDCP KEY文件后,在 'vendor/tvcertificate/tee'路径下会生成两个文件,分别是0和1,所以只要能够获取该路径下的文件列表就可以判断是否烧录过HDCP KEY文件了。

2.获取'./tee'下的文件列表

  public static final String HDCP_TEE="vendor/tvcertificate/tee";/*** 判断 ./tee 路径下有没有名为0和1的文件* @return*/public static boolean isHasHdcp14() {File fileTee = new File(HDCP_TEE);File[] listFiles = fileTee.listFiles();String[] arrayString = fileTee.list();boolean hasHdcp14 = false;if (arrayString == null || arrayString.length == 0) {Log.d(TAG, "isHasHdcp14: list null");return false;} else {List<String> nameList = Arrays.asList(arrayString);for (int i = 0; i < nameList.size(); i++) {Log.d(TAG, "isHasHdcp14: list " + nameList.get(i).toString());if (nameList.contains("0") && nameList.contains("1")) {hasHdcp14 = true;Log.d(TAG, "isHasHdcp14: = true");}}}return hasHdcp14;}

因为没有权限读取这个文件,所以返回为null

3.给指定文件权限

要修改init.mt5862.rc文件,mt5862是平台名称,

这个文件有执行顺序,我们选择在开机后修改权限,这样用户如果在开机后,立刻去系统设置中检查HDCP KEY是否烧录也没有问题,因为已经拿到权限了

on boot# create the coredump file...chmod 666 /vendor/tvcertificate/teechmod 666 /vendor/tvcertificate/tee/0chmod 666 /vendor/tvcertificate/tee/1...

如上,修改了这个文件后,需要重新编译固件,烧录到设备上,

拿到权限后再调方法就可以获取./tee路径下的文件列表了

其他文件权限,可以参考这个流程。

相关文章:

  • 成都蓝蛙科技引领AIGC创新,亮相中国AIGC开发者大会
  • Java研学-RBAC权限控制(七)
  • 【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理,以及遇到的困难和总结
  • docker system prune命令详解
  • Docker安装Oracle11g数据库
  • 关于学习Go语言的并发编程
  • 嘴尚绝卤味:健康美味新选择,开启味蕾新旅程!
  • rust语言初识
  • phpstudy配置网站伪静态
  • 景源畅信电商:做抖音运营怎么开始第一步?
  • 循序渐进Docker Compose
  • SEC批准以太坊ETF了吗?
  • react 使用 Reducer 和 Context 进行纵向扩展
  • 安全攻防三
  • 29【PS 作图】宫灯 夜景转换
  • “大数据应用场景”之隔壁老王(连载四)
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • express如何解决request entity too large问题
  • JavaWeb(学习笔记二)
  • java第三方包学习之lombok
  • JSDuck 与 AngularJS 融合技巧
  • js算法-归并排序(merge_sort)
  • vue数据传递--我有特殊的实现技巧
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • yii2权限控制rbac之rule详细讲解
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 通过几道题目学习二叉搜索树
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 写给高年级小学生看的《Bash 指南》
  • 最简单的无缝轮播
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (06)Hive——正则表达式
  • (13):Silverlight 2 数据与通信之WebRequest
  • (4)STL算法之比较
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (算法)N皇后问题
  • (原創) 物件導向與老子思想 (OO)
  • (转) Face-Resources
  • (转)EXC_BREAKPOINT僵尸错误
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Core 中插件式开发实现
  • .NET 命令行参数包含应用程序路径吗?
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET使用存储过程实现对数据库的增删改查
  • .NET学习教程二——.net基础定义+VS常用设置
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @GlobalLock注解作用与原理解析