HarmonyOS鸿蒙Next应用开发判断目标应用是否已安装,并提供常见schemes分享
HarmonyOS鸿蒙Next应用开发判断目标应用是否已安装,并提供常见schemes分享
鸿蒙应用开发判断目标应用是否已安装,并提供常见schemes分享
一、结论
在鸿蒙中判断应用是否已安全,只是通过包名是无法判断应用安装与否。在鸿蒙里新增了一种判断应用安装的工具方法,即: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';
@Entry
@Component
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"
}
]
}
]
}
]
}
}
注意
- 兼容性:不同版本的应用可能会有 Scheme 变更,建议在实际使用时进行测试。
- 参数传递:许多 Scheme 支持携带参数,例如
alipay://platformapi/startapp?appId=20000067可以直接打开支付宝的扫一扫功能。 - 应用检测:在调用
canOpenLink后,建议先判断返回值,确认应用存在后再执行跳转操作。
下面提供一些常见知名应用的 Scheme 列表:
社交类
- 微信:
weixin:// - QQ:
mqq:// - 微博:
sinaweibo:// - 钉钉:
dingtalk://
出行类
- 高德地图:
amapuri:// - 百度地图:
baidumap:// - 腾讯地图:
qqmap:// - 滴滴出行:
didi://
购物类
- 淘宝:
taobao:// - 天猫:
tmall:// - 京东:
openapp.jdmoble:// - 拼多多:
pinduoduo://
生活类
- 支付宝:
alipay:// - 美团:
imeituan:// - 饿了么:
eleme:// - 抖音:
snssdk1128://或douyin:// - 快手:
kwai://
视频类
- 腾讯视频:
tenvideo:// - 爱奇艺:
iqiyi:// - 优酷:
youku://
工具类
- 浏览器:
http://或https:// - 系统设置:
settings://
更多关于HarmonyOS鸿蒙Next应用开发判断目标应用是否已安装,并提供常见schemes分享的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,使用bundleManager.getBundleInfoForSelf()和bundleManager.getApplicationInfo()检查应用安装状态。通过wantAgent的Want对象配置uri或action来启动应用。常见schemes包括电话tel:、短信smsto:、邮件mailto:、网页https:及地图geo:。
在HarmonyOS Next应用开发中,判断目标应用是否已安装,可以通过查询应用信息来实现。以下是核心方法及常见schemes分享:
一、判断应用是否安装
使用@ohos.bundle.bundleManager模块的bundleManager.getApplicationInfo()方法。此方法尝试获取目标应用的ApplicationInfo,若成功则应用已安装,若失败(抛出错误)则未安装。
关键代码示例:
import bundleManager from '@ohos.bundle.bundleManager';
import { BusinessError } from '@ohos.base';
async function checkAppInstalled(bundleName: string): Promise<boolean> {
try {
await bundleManager.getApplicationInfo(bundleName, 0, 100);
console.info(`应用 ${bundleName} 已安装`);
return true;
} catch (error) {
console.info(`应用 ${bundleName} 未安装`);
return false;
}
}
// 使用示例:检查微信是否安装
let isWeChatInstalled = await checkAppInstalled('com.tencent.mm');
注意事项:
- 需要在
module.json5中声明权限:ohos.permission.GET_BUNDLE_INFO_PRIVILEGED(适用于系统应用)或ohos.permission.GET_BUNDLE_INFO(适用于普通应用,需用户授权)。 - 此方法为异步操作,需在异步上下文(如async函数)中调用。
二、常见应用Schemes分享
通过scheme拉起应用是常见需求,以下是部分常用应用的scheme格式:
-
微信
- 通用拉起:
weixin:// - 扫码:
weixin://scanqrcode - 小程序(需特定格式,通常通过WXAPI调用)
- 通用拉起:
-
支付宝
- 通用拉起:
alipay:// - 扫码:
alipay://scan - 付款码:
alipay://platformapi/startapp?appId=20000056
- 通用拉起:
-
QQ
- 通用拉起:
mqq:// - 打开聊天窗口:
mqq://im/chat?chat_type=wpa&uin=QQ号码
- 通用拉起:
-
抖音
- 通用拉起:
snssdk1128://(scheme可能随版本变化) - 个人主页:
snssdk1128://user/profile/用户ID
- 通用拉起:
-
系统浏览器
- 打开网页:
https://或http://
- 打开网页:
使用示例(通过startAbility拉起):
import Want from '@ohos.app.ability.Want';
import { BusinessError } from '@ohos.base';
let want: Want = {
uri: 'weixin://' // 拉起微信
};
try {
await context.startAbility(want);
} catch (error) {
console.error(`拉起应用失败: ${error.code}, ${error.message}`);
}
三、注意事项
- 权限声明:查询应用信息需相应权限,普通应用使用
GET_BUNDLE_INFO权限时需动态申请。 - scheme稳定性:第三方应用的scheme可能随版本更新而变化,使用前需测试验证。
- 隐私合规:查询或拉起其他应用需遵循隐私规范,明确告知用户目的。
以上方法可有效实现应用安装状态检查及跨应用拉起功能。

