
#2023盲盒+码# 检测是否已安装某个应用以及获取启动AbilityName 原创
【本文正在参加 2023「盲盒」+码有奖征文活动】 https://ost.51cto.com/posts/25284
目录
序言
在之前的技术分享中,提到了如何使用包管理下的installer模块
的api去安装和卸载应用,在实际应用中呢,只有安装卸载肯定是不够的,如果我们要检测目标包名应用是否存在,就需要用到bundleManager模块
了,这个模块提供应用信息查询能力,支持BundleInfo、ApplicationInfo、Ability、ExtensionAbility等信息的查询。除了查询指定应用信息用到的ohos.permission.GET_BUNDLE_INFO
是normal
级别的权限,查询所有应用信息、清理应用缓存和设置禁用使能所需的权限都是system_basic
级别的。
具体实现
项目权限配置:entry/src/main/module.json5
访问控制权限配置:openharmony-sdk\9\toolchains\lib\UnsgnedReleasedProfileTemplate.json
通过 bundleManager.getBundleInfo
去查找指定包名应用的信息,如果找不到就说明未安装此应用,如果能获取到,可以顺便获取下 启动AbilityName
以及 版本号
等信息。
这个接口需要 ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
(允许应用查询其他应用的信息)system_basic
级别的权限。
其中的 bundleFlags
参数,实际上是指定获取哪些包信息内容,比如 GET_BUNDLE_INFO_WITH_HAP_MODULE
就是用于获取包含hapModuleInfo的bundleInfo,获取的bundleInfo不包含signatureInfo、applicationInfo、ability、extensionAbility和permission的信息,而 GET_BUNDLE_INFO_WITH_ABILITY
是用于获取包含ability的bundleInfo相关信息的。
检测到应用已安装的话,我们就可以通过 context.startAbility 直接打开目标应用了
相关文档
