1# 包管理开发常见问题 2 3## 如何判断某个应用是否为系统应用 4 5适用于OpenHarmony 3.2 Beta5 API 9 6 7**解决措施** 8 9使用bundleManager模块的getApplicationInfo接口(仅系统应用可以使用)获取待检验应用的ApplicaitonInfo,根据ApplicaitonInfo中systemApp字段判断,若为true,则是系统应用,否则为非系统应用。 10 11**参考链接** 12 13[bundleManager模块](../reference/apis/js-apis-bundleManager.md) 14 15## 如何获取应用配置的versionCode和versionName 16 17适用于:Openharmony 3.2 Beta5 API 9 18 19**解决措施** 20 21首先通过@ohos.bundle.bundleManager模块bundleManager.getBundleInfoForSelf\(\)接口获取包信息BundleInfo,然后分别通过BundleInfo.versionCode、BundleInfo.versionName获取所需信息。 22 23**代码示例** 24 25``` 26import bundleManager from '@ohos.bundle.bundleManager'; 27import hilog from '@ohos.hilog'; 28let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT; 29try { 30 bundleManager.getBundleInfoForSelf(bundleFlags).then((data) => { 31 const versionCode = data.versionCode; 32 const versionName = data.versionName; 33 hilog.info(0x0000, 'testTag', `successfully. versionCode: ${versionCode}, versionName: ${versionName}`); 34 }).catch(err => { 35 hilog.error(0x0000, 'testTag', 'failed. Cause: %{public}s', err.message); 36 }); 37} catch (err) { 38 hilog.error(0x0000, 'testTag', 'failed: %{public}s', err.message); 39} 40``` 41 42**参考链接** 43 44[getBundleInfoForSelf](../reference/apis/js-apis-bundleManager.md#bundlemanagergetbundleinfoforself) 45 46## 如何获取应用自身的bundleName 47 48适用于:Openharmony 3.2 Beta5 API9 49 50**解决措施** 51 52可以通过UIAbilityContext.abilityInfo.bundleName获取。 53 54**代码示例** 55 56``` 57import common from '@ohos.app.ability.common'; 58const context = getContext(this) as common.UIAbilityContext 59console.log(`bundleName: ${context.abilityInfo.bundleName}`) 60``` 61 62**参考链接** 63 64[UIAbilityContext](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontext)、[AbilityInfo](../reference/apis/js-apis-bundleManager-abilityInfo.md#abilityinfo) 65 66## 如何获取App版本号,版本名,屏幕分辨率等信息 67 68适用于:OpenHarmony 3.2 Beta5 69 70**解决措施** 71 721. 通过@ohos.bundle.bundleManager模块中的bundleManager查询bundleInfo。 73 74 在bundleInfo中包含App版本号、版本名信息。 75 76 ``` 77 import bundleManager from '@ohos.bundle.bundleManager'; 78 ... 79 bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION).then((bundleInfo)=>{ 80 let versionName = bundleInfo.versionName;//应用版本名 81 let versionNo = bundleInfo.versionCode;//应用版本号 82 }).catch((error)=>{ 83 console.error("get bundleInfo failed,error is "+error) 84 }) 85 ``` 86 872. 在模块@ohos.app.ability.Configuration中获取screenDensity,其中包含屏幕分辨率信息。 88 89 ``` 90 import common from '@ohos.app.ability.common'; 91 ... 92 let context = getContext(this) as common.UIAbilityContext; 93 let screenDensity = context.config.screenDensity; 94 ``` 95 96 97## 如何获取应用自身的源文件路径 98 99适用于:OpenHarmony 3.2 Beta5 API 9 100 101**解决措施** 102 103- 方式一:使用应用上下文context获取。 104 105 ``` 106 this.uiAbilityContext.abilityInfo.applicationInfo.codePath 107 ``` 108 109- 方式二:使用@ohos.bundle.bundleManager获取。 110 111 1. 导入@ohos.bundle.bundleManager模块,使用bundleManager.getBundleInfoForSelf\(\)获取bundleInfo信息。 112 2. 使用bundleInfo.appInfo.codePath获取应用源文件路径。 113 114 ``` 115 import bundleManager from '@ohos.bundle.bundleManager'; 116 bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION).then((bundleInfo)=>{ 117 this.sourcePath = bundleInfo.appInfo.codePath; 118 }) 119 ``` 120 121 122## 能否在本应用中获取到其他应用的HAP包信息 123 124适用于:OpenHarmony 3.2 Beta API 9 125 126根据OpenHarmony的安全设计规范,SDK不提供接口能力给三方应用查询其他应用的包信息(包括但不限于应用名称、版本号等)。 127