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

鸿蒙系统开发【设备安全服务-应用设备状态检测】安全

设备安全服务-应用设备状态检测

介绍

本示例向您介绍如何在应用中获取DeviceToken用于对应用的设备状态进行检测。

需要使用设备安全服务接口 @kit.DeviceSecurityKit

效果预览

1

Sample工程的配置与使用

在DevEco中配置Sample工程的步骤如下

  1. [创建项目]及[应用]。
  2. 打开Sample应用,使用[AppGallery Connect]配置的应用包名替换app.json5文件中的bundleName属性值。
  3. 使用[AppGallery Connect]配置的应用Client ID替换module.json5文件中的client_id属性值。
  4. 生成SHA256应用签名证书指纹并添加到[AppGallery Connect]对应的应用配置中,证书指纹生成请参考应用开发准备中的[添加公钥指纹]章节。
  5. 在开通安全检测服务,具体Device Security Kit开发指南。
Sample工程使用说明
  1. 运行该 Sample 应用前,先对设备进行联网。
  2. 运行该 Sample 应用,点击"CheckSysIntegrity"按钮获取系统完整性检测结果,点击"CheckUrlThreat"按钮获取URL检测结果,如果获取成功,页面会显示检测结果,如果获取失败,页面会显示相应的错误码。

具体实现

本示例展示系统完整性检测,URL检测的功能在页面中直接调用,使用safetyDetect.checkSysIntegrity()方法获取当前设备的系统完整性检测结果,使用safetyDetect.checkUrlThreat()方法获取URL检测结果。

源码参考SafetyDetectModel.ts

import { hilog } from '@kit.PerformanceAnalysisKit';
import { safetyDetect } from '@kit.DeviceSecurityKit';
import { BusinessError} from '@kit.BasicServicesKit';const TAG: string = '[SafetyDetectModel]';function checkSysIntegrityPromise(): Promise<String> {return new Promise(async (resolve, reject) => {let strLen: number = 16;let srcStr: string = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefhijklmnopqrstuvwxyz0123456789";let randomStr: string = "";for (let i = 0; i < strLen; i++) {randomStr += srcStr.charAt(Math.floor(Math.random() * srcStr.length));}let sysIntegrityRequest: safetyDetect.SysIntegrityRequest = {nonce: randomStr}try {hilog.info(0x0000, TAG, 'CheckSysIntegrity begin.');let sysIntegrityResponse: safetyDetect.SysIntegrityResponse =await safetyDetect.checkSysIntegrity(sysIntegrityRequest);let result: string = sysIntegrityResponse.result;resolve(result);hilog.info(0x0000, TAG, 'Succeeded in checkSysIntegrity: %{public}s', result);}catch (err) {hilog.error(0x0000, TAG, 'CheckSysIntegrity failed: %{public}d %{public}s', err.code, err.message);reject(err);}});
}function checkUrlThreatPromise(): Promise<String> {return new Promise(async (resolve, reject) => {let urlCheckRequest: safetyDetect.UrlCheckRequest = {urls: ['https://an.example.test','https://www.huawei.com']}try {hilog.info(0x0000, TAG, 'CheckUrlThreat begin.');let urlCheckResponse: safetyDetect.UrlCheckResponse = await safetyDetect.checkUrlThreat(urlCheckRequest);let results: safetyDetect.UrlCheckResult[]  = urlCheckResponse.results;let resultStr: string = "";for (let result of results) {let url: string =  result.url;let threat: safetyDetect.UrlThreatType =  result.threat;resultStr = resultStr + "url: " + url + "      threat: " + threat + "\n";}resolve(resultStr);hilog.info(0x0000, TAG, 'Succeeded in checkUrlThreat: %{public}s', resultStr);}catch (err) {hilog.error(0x0000, TAG, 'CheckUrlThreat failed: %{public}d %{public}s', err.code, err.message);reject(err);}});
}export class SafetyDetectModel {private dispalyText: String = '';async checkSysIntegrity(callback: Function) {this.dispalyText = '';await checkSysIntegrityPromise().then((token) => {this.dispalyText = token;callback(this.dispalyText);}).catch((err: BusinessError) => {this.dispalyText = 'check SysIntegrity failed, errCode is ' + err.code;callback(this.dispalyText);});}async checkUrlThreat(callback: Function) {this.dispalyText = '';await checkUrlThreatPromise().then((token) => {this.dispalyText = token;callback(this.dispalyText);}).catch((err: BusinessError) => {this.dispalyText = 'check UrlThreat failed, errCode is ' + err.code;callback(this.dispalyText);});}
}let safetyDetectModel = new SafetyDetectModel();export default safetyDetectModel as SafetyDetectModel;

以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解;想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到!
下面是鸿蒙的完整学习路线,展示如下:
1

除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下

内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!

鸿蒙【北向应用开发+南向系统层开发】文档

鸿蒙【基础+实战项目】视频

鸿蒙面经

在这里插入图片描述

为了避免大家在学习过程中产生更多的时间成本,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!

相关文章:

鸿蒙系统开发【设备安全服务-应用设备状态检测】安全

设备安全服务-应用设备状态检测 介绍 本示例向您介绍如何在应用中获取DeviceToken用于对应用的设备状态进行检测。 需要使用设备安全服务接口 kit.DeviceSecurityKit。 效果预览 Sample工程的配置与使用 在DevEco中配置Sample工程的步骤如下 [创建项目]及[应用]。打开Sam…...

19个运维工程师面试集锦

第一部分&#xff1a;Linux基础 题目1&#xff1a; 有一百个图片文件&#xff0c;它们的地址都是 http://down.xiaomi.com/img/1.png http://down.xiaomi.com/img/2.png … 一直到 http://down.xiaomi.com/img/100.png 如何批量下载这100个图片文件&#xff0c;并找出其中大…...

一芯解锁「看家」新体验,航芯高性价比猫眼智能锁方案,让安全看得见!

随着智能门锁市场规模逐年递增&#xff0c;行业“内卷”也持续激烈。伴随着一路加码的功能卖点&#xff0c;智能门锁制造商正面临着产品功能芯片增多和成本优化的双重挑战。消费者不仅追求易用性、智能化和美观性&#xff0c;更期待产品具有良好的性价比。 而在智能门锁的众多…...

IPv4 vs IPv6:了解这两大协议的关键差异

我发现&#xff0c;很多找代理IP的朋友在后台问我的问题都很相似&#xff01;都被配置IP的最后一步&#xff1a;选择IPv4还是IPv6&#xff1f;给难住了。昨晚我一晚没睡&#xff0c;终于整理出对IPv4和IPv6的对比总结&#xff0c;从概念阐述到特点对比&#xff0c;再解答IPv6总…...

C#知识|XML文件操作

哈喽,你好啊,我是雷工! 之前有朋友在群里聊XML文件操作的问题,今天正好学习相关内容, 以下为学习笔记。 01 XML介绍 ①:XML是eXtensible Markup Language的缩写,即扩展标记语言。 ②:XML是一种可以用来创建自定义的标记语言,由W3C(万维网协会)创建,用来克服HTML的局…...

TCP 和 UDP 之间的区别?

从 连接&#xff0c;可靠性&#xff0c;传输方式等方面&#xff1a; TCP 是面向连接的协议&#xff0c;在发送数据的时候需要先通过 TCP 的三次握手&#xff0c;而 UDP 是无连接的协议&#xff0c;可以直接传输数据TCP 通过超时重传&#xff0c;流量控制和拥塞控制等方法保障了…...

共用体、枚举类型、typedef定义,位运算

共用体 union 共用体名 { 数据类型1 成员变量1; 数据类型2 成员变量2; 数据类型3 成员变量3; ... }; 共用体所有成员变量&#xff0c;所占空间重叠&#xff0c;占共同的空间。 枚举 将变量的值一一列举出来。 enum 枚举类型名…...

【运维】Linux如何批量解压文件夹下的很多个`.tar.gz`文件

要在Linux中批量解压这些.tar.gz文件&#xff0c;你可以使用tar命令配合find或者bash的通配符功能。这里是一个简单的步骤来解压所有这些.tar.gz文件&#xff1a; 方法 1: 使用 find 命令 find . -type f -name "*.tar.gz" -exec tar -xzvf {} \;这个命令的意思是从…...

centos9安装jumpserver并导入域用户

jumpserver是使用最广泛的开源堡垒机&#xff0c;依赖 mysql/mariadb、postgresql、redis 3个数据库。 当前版本为 4.0.1&#xff0c;安装包&#xff1a; jumpserver-ce-v4.0.1-x86_64.tar.gz 0、安装centos9&#xff0c;安装docker 1、解压安装包 cd /opt tar -xf jumpser…...

将一批 csv 的第一行抄进 Excel

某目录下有一批结构相同的 csv 文件&#xff1a; stock_301500.csvstock_320688.csv CODE,DT,OP,CL 301500,2023-06-02,71,67.8 301500,2023-06-05,79.35,72.61 301500,2023-06-06,75.8,77.65 CODE,DT,OP,CL 320688,2023-06-02,33,32 320688,2023-06-05,28.37,30.23 320688,2…...

【传知代码】LAD-GNN标签注意蒸馏(论文复现)

近年来&#xff0c;随着图神经网络&#xff08;GNN&#xff09;在各种复杂网络数据中的广泛应用&#xff0c;如何提升其在大规模图上的效率和性能成为了研究的热点之一。在这个背景下&#xff0c;标签注意蒸馏&#xff08;Label Attention Distillation&#xff0c;简称LAD&…...

JVM调优篇:探索Java性能优化的必备种子面试题

JVM内存模型 首先面试官会询问你在进行JVM调优之前&#xff0c;是否了解JVM内存模型的基础知识。这是一个重要的入门问题。JVM内存模型主要包括程序计数器、堆、本地方法栈、Java栈和方法区&#xff08;1.7之后更改为元空间&#xff0c;并直接使用系统内存&#xff09;。 正常…...

常见的内存泄漏及其解决方案

内存泄漏是Java开发中一个常见且令人头疼的问题&#xff0c;即使在使用垃圾回收机制的Java中&#xff0c;也无法完全避免内存泄漏的出现。当对象不再需要时却仍然占据着内存&#xff0c;导致内存使用量不断增加&#xff0c;最终可能导致 OutOfMemoryError。本文将深入探讨Java中…...

SQLSERVER 触发器记录表某个字段更新记录

想要记录该字段的原值和现有值&#xff0c;触发器写法&#xff1a; CREATE TRIGGER tr_UpdateEmployeeDepartment ON Employees AFTER UPDATE AS BEGINSET NOCOUNT ON; -- 避免多余的计数消息IF UPDATE(Department) -- 检查是否更新了 Department 字段BEGININSERT INTO Update…...

现代前端架构介绍(第一部分):App是如何由不同的构建块构成的

远离JavaScript疲劳和框架大战&#xff0c;了解真正重要的东西 几周前&#xff0c;我的同事们对我们的前端架构、代码结构和面临的挑战很感兴趣。在做了几次关于如何构建可扩展且健壮的前端的演讲后&#xff0c;我觉得把它们都总结一下并与社区分享我们的策略是一个不错的主意。…...

Android 11 关于按键拦截/按键事件处理分享

系统在frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java处理按键事件,不管是物理按键还是 SystemUI的nav_bar上的虚拟按键(使用了KeyEvent类中的,比如:KeyEvent.KEYCODE_VOLUME_UP). 主要注意的有两个函数&#xff1a; interceptKeyBef…...

最新TomatoIDC开源虚拟主机销售系统源码/有插件系统模块+模版系统

源码简介&#xff1a; 最新TomatoIDC开源虚拟主机销售系统源码&#xff0c;它有一个方便扩展的插件和模版系统模块&#xff0c;使用实用。 TomatoIDC&#xff0c;一款遵循GPL3.0协议的开源虚拟主机销售系统&#xff0c;不仅有着可以轻松扩展的插件系统和模版系统&#xff0c;…...

简单的docker学习 第4章docker容器

第4章 Docker容器 4.1 容器基础 4.1.1 容器启动流程 通过 docker run 命令可以启动运行一个容器。该命令在执行时首先会在本地查找指定的镜像&#xff0c;如果找到了&#xff0c;则直接启动&#xff0c;否则会到镜像中心查找。如果镜像中心存在该镜像&#xff0c;则会下载到…...

PHP中如何声明数组

数组是一种数据结构&#xff0c;用于存储一系列的值或对象&#xff0c;这些值或对象可以通过索引&#xff08;或键&#xff09;来访问。在PHP中&#xff0c;数组是一种复合类型的数据结构&#xff0c;可以存储多个值&#xff0c;这些值可以是整型、字符串、布尔值&#xff0c;甚…...

JavaScript前端面试题——fetch

什么是fetch&#xff1f; fetch&#xff1a;fetch是浏览器内置的api&#xff0c;用于发送网络请求 ajax&axios&fetch的关系 ajax&#xff1a;ajax 是一种基于原生 JavaScript 的异步请求技术。它使用 XMLHttpRequest 对象来发送请求和接收响应。 axios&#xff1a;…...

开源物联网平台SiteWhere:架构解析与实战部署指南

1. 项目概述&#xff1a;一个开源的物联网应用平台如果你正在寻找一个能够快速搭建、灵活扩展&#xff0c;并且能统一管理成千上万台设备的物联网平台&#xff0c;那么你很可能已经听说过或者正在评估 SiteWhere。作为一个在物联网领域摸爬滚打了多年的从业者&#xff0c;我见过…...

3分钟学会Xbox Game Pass存档提取:免费工具实现跨平台游戏进度迁移

3分钟学会Xbox Game Pass存档提取&#xff1a;免费工具实现跨平台游戏进度迁移 【免费下载链接】XGP-save-extractor Python script to extract savefiles out of Xbox Game Pass for PC games 项目地址: https://gitcode.com/gh_mirrors/xg/XGP-save-extractor 作为游戏…...

内容可寻址存储器(CAM)原理与创新设计解析

1. 内容可寻址存储器基础解析在传统计算机架构中&#xff0c;我们通常使用随机存取存储器&#xff08;RAM&#xff09;通过地址来访问数据。但有一种特殊的存储结构打破了这种范式——内容可寻址存储器&#xff08;Content-Addressable Memory, CAM&#xff09;。它的独特之处在…...

5大优化技巧:让ComfyUI-Manager在低配置设备上流畅运行

5大优化技巧&#xff1a;让ComfyUI-Manager在低配置设备上流畅运行 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various cust…...

SAP Fiori Launchpad Designer保姆级教程:手把手教你为ME29N采购订单审批创建自定义磁贴

SAP Fiori Launchpad Designer保姆级教程&#xff1a;手把手教你为ME29N采购订单审批创建自定义磁贴 当你所在的企业尚未部署HR模块&#xff0c;却需要快速启用ME29N采购订单审批功能时&#xff0c;SAP Fiori Launchpad Designer&#xff08;FLPD_CUST&#xff09;将成为你的得…...

基于Ansible Playbook的Kubernetes集群自动化部署实践

1. 项目概述&#xff1a;一个为Kubernetes集群部署而生的自动化剧本如果你和我一样&#xff0c;长期在运维和DevOps一线摸爬滚打&#xff0c;那么对Kubernetes集群的初始化部署一定又爱又恨。爱的是它带来的强大编排能力&#xff0c;恨的是那套繁琐、易错、文档分散的kubeadm i…...

[具身智能-680]:ROS2 可视化与调试工具与示例

按日常开发必用分类&#xff0c;每条可直接复制运行&#xff0c;新手也能马上上手。一、3D 可视化工具1. rviz2&#xff08;核心 3D 可视化&#xff09;功能查看&#xff1a;机器人模型、激光雷达、点云、地图、TF 坐标、导航路径、相机图像、机械臂、代价地图等。启动bash运行…...

终极指南:如何使用qmcdump轻松解密QQ音乐加密音频文件

终极指南&#xff1a;如何使用qmcdump轻松解密QQ音乐加密音频文件 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否…...

视频字幕提取神器:如何让AI帮你自动转录硬字幕?

视频字幕提取神器&#xff1a;如何让AI帮你自动转录硬字幕&#xff1f; 【免费下载链接】video-subtitle-extractor 视频硬字幕提取&#xff0c;生成srt文件。无需申请第三方API&#xff0c;本地实现文本识别。基于深度学习的视频字幕提取框架&#xff0c;包含字幕区域检测、字…...

苹果W1芯片如何通过低功耗无线技术重塑TWS耳机体验

1. 无线音频的功耗困局与苹果的破局思路 2016年9月&#xff0c;当苹果在发布会上首次亮出那对剪掉线缆的AirPods时&#xff0c;整个消费电子行业都在问同一个问题&#xff1a;它是怎么做到的&#xff1f;更具体地说&#xff0c;它如何解决了无线耳机领域最核心、也最令人头疼的…...