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

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

介绍

本示例向您介绍如何在应用中获取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内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!

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

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

鸿蒙面经

在这里插入图片描述

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

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

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

相关文章

数据结构与算法 - 递归

一、递归 1. 概述 定义&#xff1a;在计算机科学中&#xff0c;递归是一种解决计算问题的方法&#xff0c;其中解决方案取决于同一类问题的更小子集。 比如单链表递归遍历的例子&#xff1a; void f(Node node) {if(node null) {return;}println("before:" node…

Animate软件基础:在时间轴中添加或插入帧

FlashASer&#xff1a;AdobeAnimate2021软件零基础入门教程https://zhuanlan.zhihu.com/p/633230084 FlashASer&#xff1a;实用的各种Adobe Animate软件教程https://zhuanlan.zhihu.com/p/675680471 FlashASer&#xff1a;Animate教程及作品源文件https://zhuanlan.zhihu.co…

软件测试--python基础

一、python基础 (1)第一个python (2)python解释器 (3)基础语法 ①字面量 什么是字面量 常用的值类型 字符串 ②注释 ③变量 什么是变量 变量的特征 变量的目的是存储运行过程的数据 存储的目的是为了&#xff1a;重复使用 ④数据类型 type()语句 变量有类型吗&#xff1f;…

在欧拉系统中安装数据库

在欧拉系统中的安装 &#xff08;禁止超级用户root登录&#xff09; yum install mariadb-server -y #下载命令 systemctl enable --now mariadb #设置为开机自启&#xff0c;并立即启动该服务 mysql_secure_installation #安全设置&#xff0c;初始化 修…

C语言数据在内存中的存储超详解

文章目录 1. 整数在内存中的存储2. 大小端字节序和字节序判断2. 1 什么是大小端&#xff1f;2. 2 为什么会有大小端&#xff1f;2. 3 练习 3. 浮点数在内存中的存储3. 1 一个代码3. 2 浮点数的存储3. 2. 1 浮点数存的过程3. 2. 2 浮点数取的过程3. 3 题目解析 1. 整数在内存中的…

ctfshow-web入门-sql注入(web171-web175)

目录 1、web171 2、web172 3、web173 4、web174 5、web175 1、web171 单引号测一下&#xff0c;报错 -- 闭合后回显正常 也可以用 # &#xff0c;不过需要 URL 编码 成功闭合之后&#xff0c;先判断下字段数&#xff1a; 1 order by 3-- 3 的时候正常 4 的时候报错&am…

C++必修:STL之vector的了解与使用

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. C/C中的数组 1.1. C语言中的数组 在 C 语言中&#xff0c;数组是一组相同类型…

泰迪智能科技AI大模型某医院合作案例介绍

泰迪智能科技AI大模型支持以ChatGLM2-6B、Baichuan-13B、Qwen14B和文心一言等多种大语言模型为底座&#xff0c;实现基于特定领域数据、面向智能客服、问答系统、自动摘要、智能打标、内容创作、信息抽取等应用场景的模型微调、评估和推理&#xff0c;为业务智能升级和价值挖掘…

【C++从小白到大牛】类和对象

目录 一、面向过程和面向对象初步认识 二、类的引入 三、类的定义 类的成员函数两种定义方式&#xff1a; 1. 声明和定义全部放在类体中 2. 类声明放在.h文件中&#xff0c;成员函数定义放在.cpp文件中 成员变量命名规则的建议&#xff1a; 四、类的访问限定符 【访问限…

本地部署持续集成工具Jenkins并配置公网地址实现远程自动化构建

文章目录 前言1. 安装Jenkins2. 局域网访问Jenkins3. 安装 cpolar内网穿透软件4. 配置Jenkins公网访问地址5. 公网远程访问Jenkins6. 固定公网地址 前言 本文主要介绍如何在Linux CentOS 7中安装Jenkins并结合cpolar内网穿透工具实现远程访问管理本地部署的Jenkins服务. Jenk…

大模型算法面试题(十八)

本系列收纳各种大模型面试题及答案。 1、P-tuning v2 思路、优缺点是什么 P-tuning v2是清华大学自然语言处理实验室&#xff08;THUDM&#xff09;等研究机构提出的一种新的预训练模型优化方法&#xff0c;主要关注如何通过动态构建任务相关的提示序列来引导预训练模型进行更…

【数据结构进阶】手撕红黑树

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; C || 数据结构 目录 &#x1f308;前言&#x1f525;红黑树的概念&#x1f525;手撕红黑树红黑树结点的定义红黑树主体需要实现的成员函数红黑树的插入findEmpty和Size拷贝构造析构函数和…

Redis和Mysql如何保持数据一致性

一般情况下&#xff0c;Redis是用来实现应用和数据库之间读操作得缓存层&#xff0c;主要目的是减少数据库IO&#xff0c;还可以提升数据的IO性能。 当应用程序需要去读取某个数据时&#xff0c;会首先尝试去Redis里面加载&#xff0c;如果命中就直接返回&#xff0c;如果没有…

C++ 操作Git仓库

代码 #include "common.h" #include "args.c" #include "common.c"enum index_mode {INDEX_NONE,INDEX_ADD };struct index_options {int dry_run;int verbose;git_repository* repo;enum index_mode mode;int add_update; };/* Forward declar…

vue项目Nginx部署启动

1.vue打包 &#xff08;1&#xff09;package.json增加打包命令 "scripts": {"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 10.16.14.110","start": "npm run dev","un…

Halcon 边缘提取(亚像素)

Halcon提供多种边缘提取算法。像素提取方法有常用的边缘提取算子或深度学习分割模型等。考虑到精度问题可能需要提取亚像素边缘。当然也可以提取轮廓&#xff1a;线、圆、椭圆等。本文只讨论提取轮廓。 1 基本概念 正常情况下&#xff0c;无需特殊操作即可提取边缘轮廓。 1…

Linux-4:Shell编程——基础语法(50%-100%)

目录 前言 一、数组 1.数组定义 2.关联数组 3.数组长度 二、运算符 1.算术运算符 2.关系运算符 3.布尔运算符 4.逻辑运算符 5.字符串运算符 6.文件测试运算符 三、read命令 1.接收用户输入 2.开启转义 3. -p 输入提示 4. -s 静默模式 -t 设置超时时间 5.读取…

Fiddler学习笔记

目录 前言 简介 原理 界面 前言 测试可以使用fiddler工具&#xff0c;通过抓包的方式修改前端参数和模拟后端返回&#xff0c;快速定位缺陷。 简介 Fiddler是HTTP协议调试代理工具&#xff0c;可以记录并检查所有客户端和服务器之间的HTTP和HTTPS请求&#xff0c;允许监视…

算法训练1

01背包问题 背包状态方程----动态规划 二维dp 使用 f[i][j] max(f[i-1][j] ,f[i-1][j - w[i]] v[i]); 伪代码&#xff1a; int dp[100][100]; void test6() {int n; //装备数量int m; //背包容量int v[105], w[105]; //前面空间&#xff0c;后面价值for (int i 1; i &l…

ONLYOFFICE文档:为企业和开发者带来强大的文档编辑功能

本文给大家介绍一个开源项目&#xff1a;ONLYOFFICE文档&#xff0c;它能够为文档编辑、多人协作提供强大支持。无论你是个人使用&#xff0c;还是企业、商业开发&#xff0c;都能找到适合你的版本。 关于 ONLYOFFICE 文档 ONLYOFFICE 文档是一套功能强大的文档编辑器&#x…