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

【HarmonyOS】判断应用是否已安装

【HarmonyOS】判断应用是否已安装

前言

在鸿蒙中判断应用是否已安全,只是通过包名是无法判断应用安装与否。在鸿蒙里新增了一种判断应用安装的工具方法,即:canOpenLink。

使用该工具函数的前提是,本应用配置了查询标签querySchemes,并且目标应用设置了skills-uris后,会有link完成的串儿,例如:targetAppxx://test.example.com/open

所以需要知道目标方应用是否安装,需要知道对方完整的link串才行。

本应用设置

在这里插入图片描述

{
  "module": {
    "querySchemes": [
      "targetAPPxx" // 替换为目标应用的scheme
    ]
  }
}

判断安装与否代码示例:

import { hilog } from '@kit.PerformanceAnalysisKit';
import { bundleManager } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';



struct Index {

  onClickCheckApp = ()=>{
    this.canOpenApp();
  }

  private canOpenApp(){
    try {
      let link = 'targetAPPxx://test.example.com/open'; // 替换成你目标应用的link串儿
      let canOpen = bundleManager.canOpenLink(link);
      hilog.info(0x0000, 'testTag', 'canOpenLink successfully: %{public}s', JSON.stringify(canOpen));
    } catch (err) {
      let message = (err as BusinessError).message;
      hilog.error(0x0000, 'testTag', 'canOpenLink failed: %{public}s', message);
    }
  }

  build() {
    RelativeContainer() {
      Text("点击检查是否安装")
        .id('IndexHelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(this.onClickCheckApp)
    }
    .height('100%')
    .width('100%')
  }
}

目标应用设置

所以link串儿是由 scheme://host/pathStartWith 组成。例如:targetAppxx://test.example.com/open
在这里插入图片描述

{
  "module": {
    //...
    "abilities": [
      {
        //...
        "skills": [
          {
            "uris": [
              {
                "scheme": "targetAppxx",
                "host": "test.example.com",
                "pathStartWith": "oepn"
              }
            ]
          }
        ]
      }
    ]
  } 
}

http://www.kler.cn/a/370767.html

相关文章:

  • 归并排序算法
  • Vue2.0的安装
  • 记录一次微信小程序使用云能力开发的过程
  • 基于 HTML5 Canvas 制作一个精美的 2048 小游戏--day 1
  • 复用类(4):final关键字、初始化与类的加载
  • 图数据库 | 18、高可用分布式设计(中)
  • Spring Boot框架:打造可扩展的论坛网站
  • pycharm 中 json 库的常用操作
  • 基于SpringBoot云养鸡互动平台的设计与实现
  • 嵌入式学习-网络-Day01
  • 二十五、Python基础语法(函数进阶-上)
  • LN 在 LLMs 中的不同位置 有什么区别么
  • go语言中的Scan()和Scanln()输入函数
  • NLTK无法下载?
  • 超好玩又简单-猜数字游戏(有手就行)
  • 关于sse、websocket与流式渲染
  • Spring SPI、Solon SPI 有点儿像(Maven 与 Gradle)
  • zookeeper全系列学习之分布式锁实现
  • Java 实现协同过滤算法推荐算法
  • 【Linux】基础IO-下
  • STM32-Cube定时器TIM
  • 前端性能优化——加载性能优化
  • 代码学习:如何阅读开源代码
  • 行为设计模式 -命令模式- JAVA
  • 青少年编程与数学 02-002 Sql Server 数据库应用 17课题、事务处理
  • go语言多态性(接口interface)的使用