{"_id":"@capacitor-ohos/app-launcher","_rev":"2-11ff1f2f3a7a01bd1b0d452648254d2b","name":"@capacitor-ohos/app-launcher","dist-tags":{"latest":"8.0.2"},"versions":{"8.0.1":{"name":"@capacitor-ohos/app-launcher","version":"8.0.1","keywords":["capacitor","plugin","native"],"author":{"url":"Group","name":"Huawei Device Co., Ltd and iSoftStone Information Technology"},"license":"MIT","_id":"@capacitor-ohos/app-launcher@8.0.1","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-app-launcher/issues"},"dist":{"shasum":"80721117f97ce4429b77f0b07b929388372b52e2","tarball":"https://registry.npmjs.org/@capacitor-ohos/app-launcher/-/app-launcher-8.0.1.tgz","fileCount":10,"integrity":"sha512-X+Y9LLFDFPoWyLrqR0eWDMr2ttG/+2/pKtLsPAp3B1stYFre17Bc93haKQqkht+Q3AuzsfTTaMhYk8nfcenbcA==","signatures":[{"sig":"MEYCIQDaF7mv7zVLnZNItgUGSOkEPnwSUwmz4+wCMftFeGobfwIhAO7H9MD/NB9A9ps/ucDGcgydKiZ351/fDddTKtYVmobg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35432},"gitHead":"229ca4ce4e1e0f75e91fc531e3cd68cbee56ceb1","_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"capacitor":{"id":"@capacitor/app-launcher","platforms":["openharmony"]},"repository":{"url":"gitcode:CPF-Ionic/capacitor-app-launcher","type":"git"},"_npmVersion":"10.5.1","description":"The AppLauncher API allows your app to check if an app can be opened and open it.","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/app-launcher_8.0.1_1777540865284_0.41741763258261266","host":"s3://npm-registry-packages-npm-production"}},"8.0.2":{"name":"@capacitor-ohos/app-launcher","version":"8.0.2","description":"The AppLauncher API allows your app to check if an app can be opened and open it.","capacitor":{"id":"@capacitor/app-launcher","platforms":["openharmony"]},"repository":{"type":"git","url":"gitcode:CPF-Ionic/capacitor-app-launcher"},"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-app-launcher/issues"},"keywords":["capacitor","plugin","native"],"author":{"name":"Huawei Device Co., Ltd and iSoftStone Information Technology","url":"Group"},"license":"MIT","_id":"@capacitor-ohos/app-launcher@8.0.2","gitHead":"be4623c91cfc2a80c45557753833c46695a02ffa","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-JU//JlOO0h4fxLY6xO92pfzV2gVT9b4HMzKJVnWDSb582Uv/ZMxQT6kn3vpDbKINI1mE8f5iOPkY7DuJDnJk+A==","shasum":"ec33dece8eb7bc94c2d32f42ca4351633ff5e555","tarball":"https://registry.npmjs.org/@capacitor-ohos/app-launcher/-/app-launcher-8.0.2.tgz","fileCount":10,"unpackedSize":35456,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBsaVWls+o8e5q5AxgQgph4HfhSIcGplnk76dQLrXkAMAiBgvC1PinbsUq0oShmHyGJw4quPs79JuEBYxMYLqbXzrw=="}]},"_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"directories":{},"maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/app-launcher_8.0.2_1784791080334_0.04102005270403408"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-30T09:21:05.174Z","modified":"2026-07-23T07:18:00.631Z","8.0.1":"2026-04-30T09:21:05.410Z","8.0.2":"2026-07-23T07:18:00.476Z"},"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-app-launcher/issues"},"author":{"name":"Huawei Device Co., Ltd and iSoftStone Information Technology","url":"Group"},"license":"MIT","keywords":["capacitor","plugin","native"],"repository":{"type":"git","url":"gitcode:CPF-Ionic/capacitor-app-launcher"},"description":"The AppLauncher API allows your app to check if an app can be opened and open it.","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"readme":"# <center>@capacitor/app-launcher</center>\r\n[![zh-CN](https://img.shields.io/badge/lang-中文-blue.svg)](README.md)\r\n[![en](https://img.shields.io/badge/lang-English-blue.svg)](README.en.md)\r\n\r\n本项目基于 [@capacitor/app-launcher@8.0.0](https://www.npmjs.com/package/@capacitor/app-launcher) 开发。\r\n\r\n## 简介\r\n\r\n@capacitor/app-launcher是Capacitor生态系统中的核心插件，用于判断一个url是否可以被打开，为跨平台应用开发提供设备差异化适配能力，兼容Capacitor的Android、iOS等主流移动平台及浏览器环境，本文档只说明在OpenHarmony系统中的使用。\r\n\r\nAPI提供全局 `app-launcher` 对象，该对象在注册插件后可用，可用于判断一个url是否可以被打开、以及打开一个url的操作，满足各类URL调用场景需求。\r\n\r\n## 支持平台\r\n\r\n- **OpenHarmony**：5.0+\r\n\r\n## 下载安装\r\n\r\n通过命令行或手动引入即可快速安装插件，支持从npm仓库获取。\r\n\r\n### 命令行安装（推荐）\r\n\r\n安装hionic CLI：\r\n\r\n```bash\r\nnpm install -g hionic\r\n```\r\n\r\n以下两种方式中**任选其一**即可，无需重复操作：\r\n\r\nnpm安装：\r\n\r\n```bash\r\n# 安装插件\r\nnpm install @capacitor/app-launcher\r\n\r\n# 同步插件\r\nhionic sync openharmony\r\n```\r\n\r\nhionic CLI安装：\r\n\r\n```bash\r\nhionic plugin add @capacitor/app-launcher\r\n```\r\n\r\n### 手动引入安装\r\n\r\n根据插件源码中 `plugin.xml` 配置在项目中引入插件：\r\n\r\n#### 1. 添加插件配置\r\n\r\n根据 `plugin.xml` 的 `config-json` 项，通过 `target` 字段找到 `entry` 模块中 `capacitor.plugins.json` 文件，并根据 `param`\r\n标签添加配置如下：\r\n\r\n```json\r\n[\r\n  {\r\n    \"pkg\": \"@capacitor/app-launcher\",\r\n    \"classpath\": \"AppLauncher\"\r\n  }\r\n]\r\n```\r\n\r\n#### 2. 修改 CMake 配置\r\n\r\n根据 `plugin.xml` 的 `CMakeLists` 项，通过 `modules-name` 字段找到模块 `capacitor`，路径为 `target` 字段的\r\n`CMakeLists.txt` 文件，并添加 `add_subdirectory` 和 `target_link_libraries` 如下：\r\n\r\n```cmake\r\n#START_ADD_SUBDIRECTORY\r\n// ...\r\nadd_subdirectory(AppLauncher)\r\n// ...\r\n#END_ADD_SUBDIRECTORY\r\n\r\n// ...\r\n\r\ntarget_link_libraries(capacitor PUBLIC\r\n  \"-Wl,--whole-archive\"\r\n  // ...\r\n  AppLauncher\r\n  // ...\r\n  \"-Wl,--no-whole-archive\"\r\n)\r\n```\r\n\r\n#### 3. 复制源码文件\r\n\r\n根据 `plugin.xml` 的 `source-file` 项，根据 `src` 字段找到需要复制的文件，并根据 `modules-name` 字段和 `target-dir`\r\n字段找到文件复制的具体模块和目录：\r\n\r\n将源码中src/main/cpp/AppLauncher目录下的AppLauncher.h、AppLauncher.cpp、CMakeLists.txt文件引入到capacitor模块中src/main/cpp/AppLauncher目录下。\r\n\r\n将源码中src/main/ets/components/AppLauncher目录下的AppLauncher.ets文件引入到capacitor模块中src/main/ets/components/AppLauncher目录下。\r\n\r\n#### 4. 添加 ArkTS 配置\r\n\r\n在`capacitor`模块的`build-profile.json5`文件中，`buildOption/arkOptions/runtimeOnly/sources`配置项数组中加入步骤 3 中拷贝的\r\nets 文件路径：\r\n\r\n```json\r\n{\r\n  \"buildOption\": {\r\n    // ...\r\n    \"arkOptions\": {\r\n      \"runtimeOnly\": [\r\n        // ...\r\n        \"./src/main/ets/components/AppLauncher/AppLauncher.ets\"\r\n        // ...\r\n      ]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n## 卸载\r\n\r\n```bash\r\n# 卸载 app-launcher 插件\r\nhionic plugin remove @capacitor/app-launcher\r\n```\r\n\r\n## 约束与限制\r\n\r\n### 兼容性\r\n\r\n在以下版本中已测试通过：\r\n\r\n- capacitor: 8.0.0-ohos-8.0.0; SDK: 5.0.5(17); IDE: DevEco Studio: 6.0.0; ROM: 5.1.0.150;\r\n\r\n### 权限要求\r\n\r\nOpenHarmony系统中，AppLauncher插件需申请网络权限，需在主工程的 `module.json5` 的 `requestPermissions` 中添加\r\n`ohos.permission.INTERNET` 权限，配置示例如下：\r\n\r\n```json\r\n{\r\n  \"requestPermissions\": [\r\n    {\r\n      // 插件AppLauncher所需权限\r\n      \"name\": \"ohos.permission.INTERNET\"\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n### 白名单配置\r\n\r\n配置canOpenLink相关的白名单，在主工程配置中添加如下内容：\r\n\r\n```json\r\n{\r\n  \"uris\": [\r\n    {\r\n      // 自定义Scheme名称（如myapp、myproject）\r\n      \"scheme\": \"capacitorPlugin\",\r\n      // 主机名\r\n      \"host\": \"app\"\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n## 使用示例\r\n\r\n### 示例1：判断一个url是否可以被打开\r\n\r\n```typescript\r\nimport { AppLauncher } from '@capacitor/app-launcher';\r\n\r\nconst handleCanOpenUrl = async () => {\r\n  try {\r\n    const url = 'TestPlugin://app';\r\n    const result = await AppLauncher.canOpenUrl({ url });\r\n    console.log(`URL ${url} ${result.value ? '可以' : '不可以'} 被打开`);\r\n  } catch (error) {\r\n    console.log(`检查URL失败: ${error instanceof Error ? error.message : String(error)}`);\r\n  }\r\n};\r\n```\r\n\r\n### 示例2：打开一个url\r\n\r\n```typescript\r\nconst handleOpenUrl = async () => {\r\n  try {\r\n    const url = 'TestPlugin://app';\r\n    const result = await AppLauncher.openUrl({ url });\r\n    console.log(`URL ${url} ${result.completed ? '已成功' : '未成功'} 打开`);\r\n  } catch (error) {\r\n    console.log(`打开URL失败: ${error instanceof Error ? error.message : String(error)}`);\r\n  }\r\n};\r\n```\r\n\r\n## 使用说明\r\n\r\nAppLauncher是插件导出对象，可直接导入使用，导入后即可调用插件提供的所有方法，调用便捷高效，所有API均基于Promise实现，支持异步调用。\r\n\r\n| 方法名                                                          | 返回类型                                                 | 描述                   | 备注            |\r\n|--------------------------------------------------------------|------------------------------------------------------|----------------------|---------------|\r\n| canOpenUrl(options: [CanOpenURLOptions](#canopenurloptions)) | Promise&lt;[CanOpenURLResult](#canopenurlresult)&gt; | 检查是否可以使用给定的URL打开某个应用 | 需配置URL白名单     |\r\n| openUrl(options: [OpenURLOptions](#openurloptions))          | Promise&lt;[OpenURLResult](#openurlresult)&gt;       | 打开指定的URL             | 需申请网络权限、配置白名单 |\r\n\r\n### 数据结构\r\n\r\n#### CanOpenURLOptions\r\n\r\n调用 `canOpenUrl` 方法时的入参对象，用于传入需要检查的URL。\r\n\r\n| 属性  | 类型     | 描述       | 默认值 | 备注  |\r\n|-----|--------|----------|-----|-----|\r\n| url | string | 用户传入的url | 无   | 必填项 |\r\n\r\n#### CanOpenURLResult\r\n\r\n`canOpenUrl` 方法返回的结果对象，指示URL是否可被打开。\r\n\r\n| 属性    | 类型      | 描述         |\r\n|-------|---------|------------|\r\n| value | boolean | URL是否可以被打开 |\r\n\r\n#### OpenURLOptions\r\n\r\n调用 `openUrl` 方法时的入参对象，用于传入需要打开的URL。\r\n\r\n| 属性  | 类型     | 描述       | 默认值 | 备注         |\r\n|-----|--------|----------|-----|------------|\r\n| url | string | 用户传入的url | 无   | 必填项，需在白名单内 |\r\n\r\n#### OpenURLResult\r\n\r\n`openUrl` 方法返回的结果对象，指示URL是否打开成功。\r\n\r\n| 属性        | 类型      | 描述         |\r\n|-----------|---------|------------|\r\n| completed | boolean | URL是否已成功打开 |\r\n\r\n## 目录结构\r\n\r\n```plaintext\r\n|---- 目录\r\n|     |---- src/main  # 插件的实现代码\r\n|           |----cpp  # C++ 代码\r\n|           |----ets   # ArkTS 代码\r\n|     |---- README.md          # 说明文档\r\n|     |---- package.json       # 配置文件\r\n|     |---- plugin.xml         # 插件配置文件\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Ionic/capacitor-app-launcher/issues)\r\n，当然，也非常欢迎发 [PR](https://gitcode.com/CPF-Ionic/capacitor-app-launcher/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **MIT License** 开源，详见 [LICENSE](./LICENSE) 文件。","readmeFilename":"README.md"}