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路径下的文件列表了

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结构体常见问题

问题一: 结构体的自引用 错误: typedef struct _Pos{ int x; int y; struct _Pos z; }pos; 定义一个结构体&#xff0c;其内部又定义了一个同类的结构体变量&#xff0c;这是一种错误。(因为如果你在结构体内部定义自己类型的结构体变量&#xff0c;在定义结构体的…

Shell脚本零碎知识积累

1、使用While循环打印目录中的所有文件&#xff1a; #!/bin/bash# 定义要遍历的目录 directory"./"# 使用while循环读取目录中的文件 while read file doecho "Found file: $file" done < <(find "$directory" -maxdepth 1 -type f)最后一…

linux创建离线yum源给局域网机器使用

适用场景&#xff1a;在封闭的内网环境中&#xff0c;无法使用互联网进行安装各种rpm包的时候&#xff0c;离线yum源可以解决大部分问题&#xff0c;配置号后可直接使用yum进行安装包 1.准备好镜像源ISO&#xff1a; 例如以下示例&#xff0c;具体可参考自己的系统进行下载&a…

新书推荐:7.3 for语句

本节必须掌握的知识点&#xff1a; 示例二十四 代码分析 汇编解析 7.3.1 示例二十四 ■for语句语法形式&#xff1a; for(表达式1;表达式2;表达式3) { 语句块; } ●语法解析&#xff1a; 第一步&#xff1a;执行表达式1&#xff0c;表达式1初始化循环变量&#xff1b; …

MATLAB基础应用精讲-【数模应用】贝叶斯优化

目录 前言 算法原理 朴素贝叶斯算法核心思想 示例 贝叶斯定理

【错题集-编程题】kotori 和迷宫(BFS / DFS)

牛客对应题目链接&#xff1a;kotori和迷宫 (nowcoder.com) 一、分析题目 迷宫问题的扩展。 二、代码 #include <iostream> #include <cstring> #include <queue>using namespace std;const int N 35; int x1, y1; // 标记起点位置 int n, m; char arr[N][…

Java实现抢红包算法——详细注释,标准语法

package learn;import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Random;public class RobRedPacket {// 发红包算法&#xff0c;金额参数以分为单位public static List<Integer> divideRedPacket(Integer totalAmoun…

电机控制系列模块解析(23)—— 同步机初始位置辨识

一、两个常见问题 为什么感应电机&#xff08;异步机&#xff09;不需要初始位置辨识&#xff1f;&#xff08;因此感应电机转子磁场在定子侧进行励磁&#xff0c;其初始位置可以始终人为定义为0&#xff09; 为什么同步磁阻电机需要初始位置辨识&#xff1f;&#xff08;因为…

【前端每日基础】day22——js控制结构

循环语句用于重复执行代码块。 for 循环 常用于需要精确控制循环次数的情况。 for (let i 0; i < 5; i) {console.log("Iteration:", i); }while 循环 当条件为真时重复执行代码块&#xff0c;适用于循环次数不确定但条件明确的情况。 let i 0;while (i <…

五分钟搭建一个Suno AI音乐站点

五分钟搭建一个Suno AI音乐站点 在这个数字化时代&#xff0c;人工智能技术正以惊人的速度改变着我们的生活方式和创造方式。音乐作为一种最直接、最感性的艺术形式&#xff0c;自然也成为了人工智能技术的应用场景之一。今天&#xff0c;我们将以Vue和Node.js为基础&#xff…

【软件设计师】计算机组成原理

1、数据的表示 1.1 进制转换 整型有4种进制形式&#xff1a; 1.十进制&#xff08;D&#xff09;&#xff1a; 都是以0-9这九个数字组成&#xff0c;不能以0开头。 2.二进制&#xff08;B&#xff09;&#xff1a; 由0和1两个数字组成。 3.八进制&#xff08;O&#xff09;&am…

嵌入式进阶——数码管

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 数码管结构移位寄存器原理图移位寄存器数据流程移位寄存器控制流程移位寄存器串联实现数码管显示 数码管结构 共阴与共阳 共阳数码…

前端后端是什么

前端和后端是软件开发中的两个主要部分&#xff0c;它们共同构成了一个完整的应用程序或网站。下面是对前端和后端的简要介绍&#xff1a; 前端&#xff08;Frontend&#xff09; 前端开发指的是应用程序或网站用户界面&#xff08;UI&#xff09;和用户体验&#xff08;UX&a…

sudo和su都莫名其妙无法使用时

不要慌&#xff0c;因为大部分解答都需要sudo去申请权限&#xff0c;所以我们只能重启进入grub界面。 重启时按住shift或者esc,进入后&#xff0c;按↓选中advanced options&#xff0c;enter 点e进入cmd 在输入你的密码后&#xff0c;按照步骤输入&#xff1a; mount -o r…

ESP8266,51单片机,ESP32,Arduino,STM32系列,Raspberry Pi 对比,异同点分析,优势分析和代表产品

下面是您提到的几款单片机的详细介绍&#xff0c;包括它们的应用场景、区别、优势和代表产品&#xff1a; 1. ESP8266 应用场景&#xff1a;主要用于WiFi联网项目&#xff0c;如智能家居设备、IoT传感器和无线控制。优势&#xff1a;低成本、内置Wi-Fi功能、低功耗模式&#…

linux centos循环ping网段ip

循环ping&#xff0c;检测ip是否可用&#xff0c;ping通为正在使用yes&#xff0c;no为不通 vim test.sh#!/bin/bash ip"192.168.1."echo "ping log:" > ./ping.txt for i in {1..128} doping -c 1 -w 1 -W 1 $ip$i | grep -q "ttl" &&a…

机器学习KNN算法-鸢尾花分类背后技术详解

引言 K-最近邻&#xff08;KNN&#xff09;算法是一种简单而有效的分类方法&#xff0c;广泛应用于各种分类任务中。本文将详细介绍KNN算法在鸢尾花分类任务中的应用&#xff0c;并通过代码示例来展示其背后的技术精髓。我们将分三大部分来展开&#xff0c;本部分将重点介绍KN…

Android跨进程通信--Binder机制及AIDL是什么?

文章目录 Binder机制Binder是什么&#xff1f;Binder相对于其他几种跨进程通信方式&#xff0c;有什么区别&#xff1f;谈一下 Binder IPC 通信过程&#xff1a;具体的通讯过程是什么&#xff1f;Binder如何处理发送请求与接收请求?Binder是通过什么方式来进行内存映射的&…

linux入门到精通-第十九章-libevent(开源高性能事件通知库)

目录 参考什么是libevent应用核心实现libevent的地基event_base等待事件产生&#xff0c;循环监听event_loop退出循环监听event_base_loopexit创建事件工作流程 安装一&#xff08;源码安装&#xff0c;推荐&#xff09;现在源码配置编译安装验证安装 安装二&#xff08;可能因…

KingbaseES数据库merge语法

数据库版本&#xff1a;KingbaseES V008R006C008B0014 简介 MERGE 语句是一种用于数据操作的 SQL 语句&#xff0c;它能够根据指定的条件将 INSERT、UPDATE 和 DELETE 操作结合到单个语句中。其主要作用是在目标表和源表之间进行数据比较和同步&#xff0c;根据条件的匹配情况来…