android高版本适配使用Tools.java

随着android版本的提升,原生Tools不公开并且不能被正常使用,为了延续项目的功能,修改如下:

/** Copyright (C) 2006 The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**      http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package android.os;import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import android.util.Log;import java.io.DataOutputStream;/*** {@hide}*/
@SystemApi
public class Tools {private static final String TAG = "Tools_agenew";/*** @hide*/@SystemApipublic static int system(@NonNull String cmd) {return executeCommand(cmd);}@UnsupportedAppUsageprivate Tools() {}/*** @hide*/@SystemApipublic synchronized static int executeCommand(String command) {int status = -1;java.lang.Process process = null;DataOutputStream os = null;Log.d(TAG, "exec_start:" + command);try {process = Runtime.getRuntime().exec(command);status = process.waitFor();if (status == 0) {Log.i(TAG, "exec succeed.");} else {Log.i(TAG, "exec failed.");}} catch (Exception e) {Log.e(TAG, e.toString());e.printStackTrace();} finally {try {if (os != null) {os.close();}if (process != null) {process.destroy();}} catch (Exception e) {Log.e(TAG, e.toString());e.printStackTrace();}}Log.d(TAG, "exec_end:" + command);return status;}}

vendor/sprd/platform/frameworks/base/ex-interface/core/java/android/provider/UnisocSettings.java

+        /**
+         * add for com.sprd.runtime test
+         * putInt 1 means start testing, 0 for the end.
+         * @hide
+         */
+       @UnisocHiddenApi
+        public static final String UNISOC_RUNTIME_USER_ACTION = "com.sprd.runtime.USER_ACTION";

注意:请更新对应平台的api和sepolicy,笔者使用展锐T606 android 13平台,对应修改如下
system-current.txt

+  public class Tools {
+    method public static int executeCommand(String);
+    method public static int system(@NonNull String);
+  }

system-lint-baseline.txt

+VisiblySynchronized: android.os.Tools#executeCommand(String):
+   Internal locks must not be exposed: method android.os.Tools.executeCommand(String)

unisoc-hidden-current.txt

+  public class Tools {
+   method public static int executeCommand(String);
+    method public static void system(@NonNull String);
+  }

device/sprd/mpool/sepolicy/vendor/untrusted_app.te

+allow untrusted_app property_socket:sock_file { write };
+allow untrusted_app init:unix_stream_socket { connectto };
+allow untrusted_app default_prop:property_service { set };

system/sepolicy/private/app_neverallows.te

# Do not allow untrusted apps to connect to the property service
# or set properties. b/10243159
#neverallow { all_untrusted_apps -mediaprovider } property_socket:sock_file write;
#neverallow { all_untrusted_apps -mediaprovider } init:unix_stream_socket connectto;
#neverallow { all_untrusted_apps -mediaprovider } property_type:property_service set;

system/sepolicy/private/property.te

neverallow {domain-init
+  -untrusted_app
} default_prop:property_service set;

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

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

相关文章

leetcode59. 螺旋矩阵 II

题目描述 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输入:n…

IoT DC3 是一个基于 Spring Cloud 全开源物联网平台 linux docker部署傻瓜化步骤

如有不了解可先参考我的另一篇文章本地部署:IoT DC3 是一个基于 Spring Cloud 的开源的、分布式的物联网(IoT)平台本地部署步骤 如有不了解可先参考我的另一篇文章本地部署: 1 环境准备: JDK 8 以上 docker 安装好 下载docker-compose-dev.yml 文件 执行基础环境docker安装 …

golang函数的返回值

函数可以有0或多个返回值,返回值需要指定数据类型,返回值通过return关键字来指定。 return可以有参数,也可以没有参数,这些返回值可以有名称,也可以没有名称。go中的函数可以有多个返回值。 return关键字中指定了参数时…

PTA 7-230 美好日子

据说2021年12月2日是一个美好日子,因为这是一个完全对称日!这里认为一个美好日子是一个共8位数字的完全对称日(例如20211202),其中年份占4位,月份、日份都是2位。对于给定的年份,请判断该年是否…

gitlab-jenkins-shell-helm-chart-k8s自动化部署微服务

1.准备好编译环境的容器,所有容器的镜像制作在gemdale-dockerfile这个代码库里面,也可以直接拉取官方镜像部署 docker run --name node1420-patternx -v /data/var/www/:/data/var/www/ -v /var/jenkins_home/:/var/jenkins_home/ -v /mnt/hgfs/:/mnt/h…

zabbix的自动发现机制:

zabbix的自动发现机制: zabbix客户端主动的和服务端联系,将自己的地址和端口发送给服务端,实现自动添加监控主机 客户端是主动的一方 缺点;如果自定义网段中主机数量太多,等级耗时会很久,而且这个自动发现机制不是很…

后端部署-阿里云服务器-开设端口-域名解析-安全证书-备案

本文以阿里云的轻量级数据库为例子。 前言 要搭建一个完整的后端系统一般的步骤: 获得一台服务器----->开设端口----->搭建后台所需要的语言和应用---->利用公网ip地址测试后端程序------->购买域名和证书-------->域名绑定和解析------->icp备…

Nginx安装

Nginx简介 Nginx 是一个高性能的HTTP和反向代理web服务器,其特点是占有内存少,并发能力强,其并发能力在同类型的网页服务器中表现较好。 Nginx安装 下载地址 安装稳定版本 下载完成后进行解压 可以双击nginx.exe 启动nginx 也可以打开cm…

【mysql】基于binlog数据恢复指令和坑

文章目录 1.binlog相关配置是否开启binlogbinlog日志格式 2.导出binlog日志mysqlbinlog指令updateinsertdeletebinlog中的事件 3.数据恢复4.特别注意的坑为什么bash脚本执行mysqlbinlog,无法找到指令为什么执行mysqlbinlog,无法数据恢复 1.binlog相关配置…

nodejs+vue+微信小程序+python+PHP就业求职招聘信息平台的设计与实现-计算机毕业设计推荐

主要有前端和后端,前端显示整个网站的信息,后端主要对前端和网站的基本信息进行管理。用户端模块主要是系统中普通用户在注册、登录系统可以看到自己的基本信息,维护自己的信息;管理员端模块主要是管理员登录后对整个系统相关操作…

【Vue】使用 Vue CLI 脚手架创建 Vue 项目(使用GUI创建)

前言 在开始使用Vue进行开发之前,我们需要先创建一个Vue项目。Vue CLI(Command Line Interface)是一个官方提供的脚手架工具,可以帮助我们快速创建Vue项目。Vue CLI也提供了一个可视化的GUI界面来创建和管理Vue项目。 步骤 打开终…

微信小程序uni.chooseImage()无效解决方案

Bug场景: 微信小程序在上传图片时可以通过 uni.chooseImage()方案进行上传,这里不再赘述具体参数。一直项目都可以正常使用,突然有一天发现无法使用该方法,于是查了一下,发现是用户隐私协议问题。故记录一下解决方案。…

JVM Optimization Learning(五)

一、JVM Optimization 1、G1 G1官网说明:Garbage First Garbage Collector Tuning The Garbage First Garbage Collector (G1 GC) is the low-pause, server-style generational garbage collector for Java HotSpot VM. The G1 GC uses concurrent and paralle…

Java 基础学习(五)面向对象编程-对象和类

1 类和对象 1.1 面向对象概述 1.1.1面向对象简史 面向对象编程思想最初的起源可以追溯到1960年的Simula语言,这被认为是第一个支持面向对象编程概念的语言。Simula引入了类、对象、继承等概念,将数据和操作进行封装。Simula的创始人奥利-约翰达尔&…

思维模型 投射效应

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。将自身想法投射于他人。 1 投射效应的应用 1.1 生活中常见的投射效应 自我投射:一个人在工作中表现出色,他可能会认为其他人也应该像他一样努力工作,并…

mvn转mp4

jave-1.0.2.jar 下载 。 安装到maven使用 参考: https://blog.csdn.net/weixin_43064185/article/details/121823276 下载jar包到本地 mvn install:install-file -DfileD:\repository\jave-1.0.2\jave-1.0.2.jar -DgroupIdwg -DartifactIdjave -Dversion1.0.2 -…

2023.12.1 --数据仓库之 拉链表

目录 什么是拉链表 为什么要做拉链表? 没使用拉链表: 使用了拉链表: 题中订单拉链表的形成过程 实现语句 什么是拉链表 拉链表是缓慢渐变维的一种解决方案. 拉链表,记录每条信息的生命周期,一旦一条记录的生命周期结束,就重新开始一条新的记录,并把当前日期放入生效开始…

“滑动窗口”算法实例

1 问题 给定一个字符串“S”,找出其中不含有重复字符的最长子串的长度。例如:S‘ABCABCBB’,则不含重复字符的最长字串长度为3.。S‘ABCDFG’,则不含重复字符的最长字串长度为6。要求设计一个Python程序实现该功能? 2 方法 按照一…

Vue--第五天

路由实操 1.抽离路由: 代码修改部分: router,存放index.js: import Find from ../views/Find import My from ../views/My //import Friend from ../views/Friend //修改成绝对路径 //一般推荐是下面的这种写法,有利于书写和…

VSCode 配置JavaScript环境

首先下载node.js,我的电脑是Windows10版本 之后安装node 在这里插入图片描述 安装成功 如果发现运行的时候还是报错,则添加环境变量试试 在Windows10版本的搜索框,搜索环境变量,点击 D:\Program Files\nodejs\ %NODE_HOME…