• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.versionCodeBundleInfo.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