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

news2024/12/29 4:30:56

本文介绍如何使用应用@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.coloradmin.cn/o/2083185.html

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

相关文章

售后更新出现问题分析-幂等和防重

2024-08-27 早上测试提交BUG,说售后单状态流转不对,吓得我一激灵,赶紧打开IDEA 查看代码,发现售后这块代码没有动过呀,咋回事? 流程是这样的: 测试模拟用户下单,提交订单后付款,然后…

[MOCO v2] Improved Baselines with Momentum Contrastive Learning

1、目的 结合SimCLR和MoCo,实现SoTA 2、方法 ​​​​​​​ ​​​​​​​ 将SimCLR的两点设计融入MoCo中: 1)MLP projection head 2-layer, hidden layer 2048-d, with ReLU 2)more data augmentation blur a…

【专项刷题】— 链表

1、2两数相加 - 力扣(LeetCode) 思路: 只要有任意一个链表还没有为空的时候就继续加,当链表为空的时候但是t不尾0,还是进入循环进行操作 代码: public ListNode addTwoNumbers(ListNode l1, ListNode l2) {…

【HuggingFace Transformers】LlamaModel源码解析

LlamaModel源码解析 1. LlamaModel 介绍2. LlamaModel类 源码解析3. 4维因果注意力掩码生成 1. LlamaModel 介绍 LlamaModel 是一个基于 Transformer 架构的解码器模型,用于自然语言处理任务。它是 Meta 的 LLaMA (Large Language Model Meta AI) 系列的一部分&…

Spatial Structure Constraints for Weakly SupervisedSemantic Segmentation

摘要 由于易于获得,图像级标签在弱监督语义分割任务中很受欢迎。 由于图像级标签只能指示特定类别对象的存在或不存在,因此基于可视化的技术已被广泛采用来提供对象位置线索。由于类激活图(class activation map, CAMs)只能定位目标中最具辨识性的部分…

API测试基础知识(基本概念、测试方法、测试工具)

在进行API测试之前,我们先了解一下 什么是API? API(全称Application Programming Interface)是两个单独的软件系统之间的通信和数据交换。实现API的软件系统包含可以由另一个软件系统执行的功能/子例程。 什么是API测试 API测…

ATL宁德新能源25届校招社招:Verify测评及四色测评考什么?真题分析

ATL新能源科技有限公司-Verify测评邀请题型介绍 a. 测评内容包含演绎推理数字推理两部分,大约用时45分钟左右; b. 正式测评后即开始计时,每项测评时限为18分钟。 c. 为确保测评顺利进行,不影响测评结果,请优先使用电…

分享5个专业写论文神器自动生成的软件工具

在当今学术研究和写作领域,AI论文写作工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿,还能进行内容优化、查重和排版等操作。以下是五款专业写论文神器自动生成的软件工具,其中特别推荐千笔-AIPasspap…

入职后,我发现工作内容和自己想象中的不太一致。。

2018年6月,大三暑假进行时,实习第二天上班 昨天王工跟我说最好统一开发工具用eclipse,今早我瞄到其实也有同事用idea。 eclipse还得学习,用idea算了,随便上网找个盗版的就好咯,不纠结这么多。 公司被逮到…

驱动:dht11驱动程序

DHT11读写时序详解(时序上板实测)_mcu 读取thd11 接收数据开始-CSDN博客文章浏览阅读733次,点赞20次,收藏21次。DHT11有两种,一种三线制,一种四线制。其中都包括1个VDD,1个GND,和1个…

常见几种简单的深度学习算法在生物医学数据领域的特点和不足

本团队提供生物医学领域专业的AI(机器学习、深度学习)技术支持服务。如果您有需求,请扫描文末二维码关注我们。 通过表格的形式,总结了常见几种简单的深度学习算法在生物医学数据领域的特点和不足(仅个人理解&#xff…

HarmonyOS NEXT 实战开发:实现日常提醒应用

为什么要开发这个日常提醒应用? 最近鸿蒙热度一直不减,而且前端的就业环境越来越差,所以心里面萌生了换一个赛道的想法。HarmonyOS NEXT 是华为打造的国产之光,而且是纯血版不再是套壳,更加激起了我的好奇心。ArkTS是…

【网络安全】分析cookie实现PII IDOR

未经许可,不得转载。 文章目录 正文正文 目标:公共电子商务类型的网站,每月有大约6万到10万访问者,注册用户大约有5万。 存在一个查询个人资料的端点/GetProfiledetails,以下是完整的请求和响应: 我发现,cookie非常类似于base64编码后的结果,于是我将其进行base64解码…

WEB开发---使用HTML CSS开发网页实时显示当前日期和时间

自己刚开始学习html css知识&#xff0c;临时做个网页&#xff0c;实时显示当前日期和时间功能。 代码如下&#xff1a; test.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&q…

C#利用ffmpeg借助NVIDIA GPU实现实时RTSP硬解码+硬编码录制MP4

目录 说明 效果 项目 代码 下载 说明 利用周杰的开源项目 Sdcb.FFmpeg 项目地址&#xff1a;https://github.com/sdcb/Sdcb.FFmpeg/ 代码实现参考&#xff1a;https://github.com/sdcb/ffmpeg-muxing-video-demo 效果 C#利用ffmpeg借助NVIDIA GPU实现实时RTSP硬解码硬…

004-OpenFeign服务接口调用

文章目录 1 简介2 OpenFeign 通用步骤2.1 建module2.2 改POM2.3 写YML2.3 主启动类2.4 cloud-api-commons模块修改2.4.1 按照架构说明进行编码准备2.4.2 引入openfeign依赖2.4.3 新建服务接口PayFeignApi 2.5 编写controller2.6 测试2.7 总结 3 OpenFeign高级特性3.1 注意3.2 O…

QGC 修改为双路视频介绍

文章目录 一、效果图二、简要流程关于QGC地面站其它文章请点击这里: QGC地面站 一、效果图 右下角切换视频通道; 左下角切换地图与当前的视频 二、简要流程 ● C++ 后端 C++ 中利用 QGC 原有的红外热成像视频流,修改几处即可 // src\VideoManager\VideoManager.cc Vi…

快排找基准值之挖坑法

思路&#xff1a;把数组里第一个数据拿出来记为标准值&#xff0c;然后两边交替&#xff0c;从右往左找比基准值小的数据放到前面缺数据的坑里。放完后该位置也缺数据成为了新的坑&#xff0c;再把坑的下标移到新的位置。 从左到右找比基准值大的数据&#xff0c;后面同理。 …

装饰器(Decorators)的实现

1、Python 中的函数可以像普通变量一样当做参数传递给另外一个函数&#xff1b; 2、装饰器&#xff1a;不修改函数源码但是要实现给函数添加额外功能。python使用语法糖即来实现装饰器。 3、装饰器的作用&#xff1a; &#xff08;1&#xff09;抽离出大量函数中与函数功能本…

Spring框架 基础介绍

目录 Spring框架 IOC: AOP: 一站式&#xff1a; spring搭建 Maven 导入 spring 核心基础 jar 编写 spring 配置文件 编写一个 User 实体类 测试 spring IOC(控制反转) 依赖注入&#xff1a; 1、通过属性注入 2、通过构造方法注入 spring中bean管理 1、基于xml配置方…