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