【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"}]}]}]}
}