鸿蒙5 汽车行业实践的关键问题-如何判断应用程序是否安装
·
📢 重磅福利!参与活动赢好礼,马克杯、鼠标垫,8月1日-12月31日等你来!
点击链接: 官方班级名称:HarmonyOS赋能资源丰富度建设(第四期)-GitCode
问题现象
在实际开发中,经常会有需要先判断应用是否已安装,再决定直接跳转应用还是引导用户进行其它操作的场景,应如何判断呢?
背景知识
bundleManager.canOpenLink可以查询给定链接是否可以打开,进而判断应用是否安装。指定链接的scheme需要在module.json文件的querySchemes字段下配置。
解决方案
以判断微博是否安装为例。
- 微博中已配置uri。
- {
- "abilities": [
- {
- "skills": [
- {
- "uris": [
- {
- "scheme":"sinaweibo"
- }
- ]
- }
- ]
- }
- ]
- }
- 自己的应用中配置querySchemes。
- {
- "module": {
- "querySchemes": [
- "sinaweibo"
- ]
- }
- }
- 判断应用微博是否安装。
- isWeiboInstalled(): boolean {
- try {
- return bundleManager.canOpenLink('sinaweibo://');
- } catch (err) {
- let message = (err as BusinessError).message;
- hilog.error(0x0000, 'testTag', 'canOpenLink failed: %{public}s', message);
- }
- return false;
- }
常见FAQ
Q:如果应用未安装,使用canOpenLink的返回值仍然为true,导致点击没反应,无法正确跳转。
A:检查uri是否配置错误。只有被拉起的应用才需要配置要拉起的uri,自己应用只需要配置对应的querySchemes。
Q:能否根据bundleName(包名)判断应用是否安装?
A:当前无法直接通过bundleName(包名)判断应用是否安装,可以尝试使用startability拉起应用,错误码是16000001时,表示指定的ability不存在。
更多推荐



所有评论(0)