@ohos.systemParameterEnhance系统参数接口调用:控制设备硬件(执行shell命令方式)

本文介绍如何使用应用@ohos.systemParameterEnhance (系统参数)(系统接口)来控制设备硬件,可以通过它在系统中执行一段shell命令,从而实现控制设备的效果。接下来以一个实际的样例来演示如何通过它来控制设备以太网接口

开源地址:https://gitee.com/from-north-to-north/ohos.systemParameterEnhance

开发环境

  • DAYU200 rk3568开发板
  • OpenHarmony 4.1r
  • API 10 (full sdk)
  • DevEco Studio 4.1 Release

1.应用开发部分

1.首先安装full sdk

  • 安装full sdk教程:https://ost.51cto.com/posts/26752

2.修改full_sdk/toolchains/lib/UnsgnedDebugProfileTemplate.json文件

  • apl的值从normal改为system_basic
  • app-feature值的由hos_normal_app改为hos_system_app

3.新建一个OpenHarmony应用工程,调用如下方法,然后正常自动签名安装。

import systemparameter from '@ohos.systemParameterEnhance';Text("关闭eth0以太网接口").fontSize(50).fontWeight(FontWeight.Bold).onClick(()=>{try {systemparameter.setSync("sys.ifconfig.eth0", "down");}catch(e){console.log("set unexpected error: " + e);}})Text("开启eth0以太网接口").fontSize(50).fontWeight(FontWeight.Bold).onClick(()=>{try {systemparameter.setSync("sys.ifconfig.eth0", "up");}catch(e){console.log("set unexpected error: " + e);}})

4.然后获取该hap的证书指纹,进行应用特权配置。

hdc shell "bm dump -n 应用的bundle_name | grep finger"

image.png

image.png

5.配置应用特权。提取当前开发板中的特权配置文件install_list_capability.json,文件位于/etc/app/中。

hdc file recv /etc/app/install_list_capability.json D:\

在install_list_capability.json中添加 应用的配置信息

image.png


将特权配置文件install_list_capability.json推送回系统中,覆盖系统配置。然后 重启系统使得系统配置生效。

hdc shell "mount -o remount,rw /"
hdc file send d:\install_list_capability.json /etc/app/install_list_capability.json
hdc shell reboot

系统开发部分

1.新建init services如下,放到开发板/system/etc/init下

{"jobs" : [{"name" : "param:sys.ifconfig.eth0=up","condition" : "sys.ifconfig.eth0=up","cmds" : ["start if_eth0_up"]}, {"name" : "param:sys.ifconfig.eth0=down","condition" : "sys.ifconfig.eth0=down","cmds" : ["start if_eth0_down"]}], "services" : [{"name" : "if_eth0_up","start-mode" : "condition","path" : ["/system/bin/ifconfig", "eth0", "up"],"disabled" : 1,"sandbox" : 0,"uid" : "root","gid" : ["shell"],"once" : 1,"secon" : "u:object_r:sh_exec:s0"},{"name" : "if_eth0_down","start-mode" : "condition","path" : ["/system/bin/ifconfig", "eth0", "down"],"disabled" : 1,"sandbox" : 0,"uid" : "root","gid" : ["shell"],"once" : 1,"secon" : "u:object_r:sh_exec:s0"}]
}
hdc shell "mount -o remount,rw /"
hdc file send a.cfg /system/etc/init
hdc shell reboot

image.png

2.关闭selinux

  • 默认DAC规则只允许三方应用对参数具有get, watch 的权限,因此三方应用若需要set权限需要重新设置DAC规则。 此外, 三方应用的selinux权限默认是未设置的,因此需要参照mac访问控制权限设置进行设置。如果需要设置请参考:https://docs.openharmony.cn/pages/v4.1/zh-cn/device-dev/subsystems/subsys-boot-init-sysparam.md#dac%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%E6%9D%83%E9%99%90%E8%AE%BE%E7%BD%AE
  • 此处我们选择关闭selinux来规避这个问题
临时关闭可进入shell使用如下命令:
hdc shell setenforce 0永久性生效,执行以下命令:
hdc shell mount -o rw,remount /
hdc shell "sed -i 's/enforcing/permissive/g' /system/etc/selinux/config"
hdc shell "cat /system/etc/selinux/config |grep SELINUX="
hdc shell reboot# 或者修改源码
1、base/security/selinux_adapter/selinux.gni里面把selinux_enforce改为false
2、vendor/hihope/rk3568/config.json里面把build_selinux改为false

观察运行效果

在终端执行ifconfig命令来观察以太网接口是否被关闭

拓展

1.如果需要执行/vendor/bin下面的bin文件,cfg文件需要放置在/vendor/etc/init下。

2.可以操作接口执行一下shell命令来控制dayu200的led灯

image.png

参考链接

1.https://laval.csdn.net/64b34a863a5d4a7c4342eade.html

2.https://forums.openharmony.cn/forum.php?mod=viewthread&tid=2109

3.https://docs.openharmony.cn/pages/v4.1/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-system-parameterEnhance-sys.md#systemparametergetsync

4.https://forums.openharmony.cn/forum.php?mod=viewthread&tid=2108

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

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

相关文章

链表OJ题——环形链表2

文章目录 一、题目链接二、解题思路三、解题代码 一、题目链接 环形链表2 题目描述:在链表有环的基础上,找出环的入口点。 二、解题思路 三、解题代码

超实用的8个无版权、免费、高清图片素材网站整理

不管是设计、文章配图,还是视频制作,图片都至关重要。但是图片版权一直都是困扰很多设计、自媒体以及企业的大问题。现在,因为图片侵权被告的案例已经是司空见惯了,有的公众号甚至因为图片版权问题遭受致命打击。 1. Pexels Pexe…

(经验)SVN降版本,保留版本信息和用户信息。

背景:由于开始公司人数规模小,没有关心SVN最新版本免费对于用户数量限制要求不敏感,随着人数越来越多,公司来了新员工已经添加不了SVN需要注册码了,不利于SVN文件管理的在公司内部的推广。看了好多资料,都没…

信息学奥赛初赛天天练-75-NOIP2016普及组-完善程序-二分答案、二分查找、贪心算法、贪心策略

文章PDF链接: https://pan.baidu.com/s/1SVcGU_rApvoUWrUoviPCiA?pwdht2j 提取码: ht2j 复制这段内容后打开百度网盘手机App,操作更方便哦 1 完善程序 (单选题 ,每小题3分,共30分) 郊游活动 有 n名同学参加学校组织的郊游活动&#xff0c…

有没有比较好用的在线翻译工具?实力推荐这4款。

当我们面对外文资料时,可能需要翻阅厚重的词典,耗费大量的时间和精力。在翻译这方面,很多人都十分依赖翻译工具的,因为这些工具只需几秒钟就能给出翻译结果,提高了我们的学习和工作的效率。但是随着翻译工具越来阅读&a…

前后端分离项目实战-通用管理系统搭建(前端Vue3+ElementPlus,后端Springboot+Mysql+Redis)第八篇:Tab标签页的实现

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

使用C++封装顺序表

作业&#xff1a;使用C手动封装一个顺序表&#xff0c;包含成员数组一个&#xff0c;成员变量N个 #include <iostream>using namespace std;using datatypeint; #define MAX 20struct SeqList { private: //私有datatype *data;int size0; …

【Java】数据类型与变量(二)

目录 3.变量 3.1什么是变量&#xff08;变量的概念&#xff09; 3.2语法格式 ​编辑​编辑3.3整型变量 3.3.1整型变量如何定义 ​编辑 3.3.2长整型变量 3.3.3短整型变量 3.3.4字节型变量 3.4浮点型变量 3.4.1双精度浮点型 3.4.2单精度浮点型 3.4.3单精度浮点型与双…

Google Search Console:完整教程

Google 提供了各种工具来收集和分析网站数据&#xff0c;其中最有价值的工具之一是 Google Search Console &#xff08;GSC&#xff09;。前身为 Google Webmaster Tools&#xff0c;它为 SEO 提供了对网站性能的宝贵见解。自 2015 年推出以来&#xff0c;该平台取得了长足的发…

关机软件项目规划

一、概述 1.1 编写目的 此项目开发规划书的编写主要是为《UPS SNMP卡网络监控系统》中配套使用的关机软件做主要的规划和整合&#xff0c;在开发过程中起到引导作用&#xff0c;以及给使用者提供简要的说明。 1.2 项目背景 关机软件是UPS网络监控适配器项目监控层的组成部分…

黑神化爆火,悟空的八十一难究竟用到了什么数据库?

九九八十一难&#xff0c;第一难。猿神&#xff0c;启动…然后发现先解压缩&#xff0c;后着色编译。就这姿势&#xff0c;这就是爆火的 《黑神话&#xff1a;悟空》单机游戏&#xff0c;哪怕是在工作日&#xff0c;大家仍纷纷涌入这个游戏世界。8月20日&#xff0c;万众瞩目的…

Excel表格合并后同步修改行号,删除重复项,按合并后的列进行排序

Excel合并单元格后每个合并后的行占据多列&#xff0c;如何进行排序 1、全选后选择合并选项中的取消合并单元格 2、选择删除重复项&#xff08;可以直接选定唯一行&#xff09; 3、可以发现合并后的每行占Excel的一行 4、然后制定排序规则 5、序号列下拉重排&#xff08;鼠标放…

智谱开源 CogVideoX-5B 视频生成模型,RTX 3060 显卡可运行;曝 OpenAI 模型「草莓」今秋推出

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

Android Studio Koala下载并安装,测试helloworld.

1、下载&#xff1a; 下载 Android Studio 和应用工具 - Android 开发者 | Android Developers 2、滚动条拉到近最后&#xff0c;各个系统的下载地址&#xff1a; 3、下载完成以后&#xff0c;我们双击运行安装&#xff1a; 如果有路径要修改&#xff0c;则修改下就可以了&a…

【大模型系列篇】预训练模型:BERT GPT

2018 年&#xff0c;Google 首次推出 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;。该模型是在大量文本语料库上结合无监督和监督学习进行训练的。 BERT 的目标是创建一种语言模型&#xff0c;可以理解句子中单词的上下文和含义&…

新华三H3C HCL配置IS-IS基本配置

实验目标 完成本实验,应该能够达到以下目标。 ●掌握如何在路由器进行单区域IS-IS的基本配置 ●掌握如何在路由器上查看IS-IS路由表、邻居信息 ●掌握如何在路由器上查看IS-IS的LSDB信息 实验拓扑 IP地址表 实验任务 单区域配置&#xff1a; 在本实验任务中,需要在路由器上…

Dockerfile+私有仓库

使用Dockerfile创建应用镜像 在Docker file中定义所需要执⾏的指令&#xff0c;使⽤ docker build创建镜 像&#xff0c;过程中会按照dockerfile所定义的内容进⾏打开临时性容器&#xff0c;把docker file中命令全部执⾏完成&#xff0c;就得到了⼀个容器应⽤镜像&#xff0c;每…

排序算法刷题【leetcode88题目:合并两个有序数组、leetcode21:合并两个有序链表】

一、合并两个有序数组 题目比较简单&#xff0c;使用归并排序里面的同样的操作就可以&#xff0c;代码如下所示 #include <iostream> #include <vector> using namespace std;/* leetcode88题&#xff1a;合并两个有序数组 */ class Solution { public:void merge…

代码随想录训练营 Day41打卡 动态规划 part08 121. 买卖股票的最佳时机 122. 买卖股票的最佳时机II 123. 买卖股票的最佳时机III

代码随想录训练营 Day41打卡 动态规划 part08 一、力扣121. 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计…

网络安全总结②

上一篇&#xff1a;网络安全总结① 下一篇&#xff1a; 传统防火墙 传统防火墙 技术&#xff1a;访问控制、代理技术、会话机制 工作层次&#xff1a;应用层一下 防御模式&#xff1a;通过防御设备划分边界&#xff0c;基于IP/端口和特征进行判断&#xff1b;以隔离为基础&am…