@capacitor-ohos/app-launcher
v8.0.1
Published
The AppLauncher API allows your app to check if an app can be opened and open it.
Readme
@capacitor/app-launcher
本项目基于 @capacitor/[email protected] 开发。
简介
@capacitor/app-launcher是Capacitor生态系统中的核心插件,用于判断一个url是否可以被打开,为跨平台应用开发提供设备差异化适配能力,兼容Capacitor的Android、iOS等主流移动平台及浏览器环境,本文档只说明在OpenHarmony系统中的使用。
API提供全局 app-launcher 对象,该对象在注册插件后可用,可用于判断一个url是否可以被打开、以及打开一个url的操作,满足各类URL调用场景需求。
支持平台
- OpenHarmony:5.0+
下载安装
通过命令行或手动引入即可快速安装插件,支持从npm仓库获取。
命令行安装(推荐)
安装hionic CLI:
npm install -g hionic以下两种方式中任选其一即可,无需重复操作:
npm安装:
# 安装插件
npm install @capacitor/app-launcher
# 同步插件
hionic synchionic CLI安装:
hionic plugin add @capacitor/app-launcher手动引入安装
根据插件源码中 plugin.xml 配置在项目中引入插件:
1. 添加插件配置
根据 plugin.xml 的 config-json 项,通过 target 字段找到 entry 模块中 capacitor.plugins.json 文件,并根据 param
标签添加配置如下:
[
{
"pkg": "@capacitor/app-launcher",
"classpath": "AppLauncher"
}
]2. 修改 CMake 配置
根据 plugin.xml 的 CMakeLists 项,通过 modules-name 字段找到模块 capacitor,路径为 target 字段的
CMakeLists.txt 文件,并添加 add_subdirectory 和 target_link_libraries 如下:
#START_ADD_SUBDIRECTORY
// ...
add_subdirectory(AppLauncher)
// ...
#END_ADD_SUBDIRECTORY
// ...
target_link_libraries(capacitor PUBLIC
"-Wl,--whole-archive"
// ...
AppLauncher
// ...
"-Wl,--no-whole-archive"
)3. 复制源码文件
根据 plugin.xml 的 source-file 项,根据 src 字段找到需要复制的文件,并根据 modules-name 字段和 target-dir
字段找到文件复制的具体模块和目录:
将源码中src/main/cpp/AppLauncher目录下的AppLauncher.h、AppLauncher.cpp、CMakeLists.txt文件引入到capacitor模块中src/main/cpp/AppLauncher目录下。
将源码中src/main/ets/components/AppLauncher目录下的AppLauncher.ets文件引入到capacitor模块中src/main/ets/components/AppLauncher目录下。
4. 添加 ArkTS 配置
在capacitor模块的build-profile.json5文件中,buildOption/arkOptions/runtimeOnly/sources配置项数组中加入步骤 3 中拷贝的
ets 文件路径:
{
"buildOption": {
// ...
"arkOptions": {
"runtimeOnly": [
// ...
"./src/main/ets/components/AppLauncher/AppLauncher.ets"
// ...
]
}
}
}卸载
# 卸载 app-launcher 插件
hionic plugin remove @capacitor/app-launcher约束与限制
兼容性
在以下版本中已测试通过:
- capacitor: 8.0.0-ohos-8.0.0; SDK: 5.0.5(17); IDE: DevEco Studio: 6.0.0; ROM: 5.1.0.150;
权限要求
OpenHarmony系统中,AppLauncher插件需申请网络权限,需在主工程的 module.json5 的 requestPermissions 中添加
ohos.permission.INTERNET 权限,配置示例如下:
{
"requestPermissions": [
{
// 插件AppLauncher所需权限
"name": "ohos.permission.INTERNET"
}
]
}白名单配置
配置canOpenLink相关的白名单,在主工程配置中添加如下内容:
{
"uris": [
{
// 自定义Scheme名称(如myapp、myproject)
"scheme": "capacitorPlugin",
// 主机名
"host": "app"
}
]
}使用示例
示例1:判断一个url是否可以被打开
import { AppLauncher } from '@capacitor/app-launcher';
const handleCanOpenUrl = async () => {
try {
const url = 'TestPlugin://app';
const result = await AppLauncher.canOpenUrl({ url });
console.log(`URL ${url} ${result.value ? '可以' : '不可以'} 被打开`);
} catch (error) {
console.log(`检查URL失败: ${error instanceof Error ? error.message : String(error)}`);
}
};示例2:打开一个url
const handleOpenUrl = async () => {
try {
const url = 'TestPlugin://app';
const result = await AppLauncher.openUrl({ url });
console.log(`URL ${url} ${result.completed ? '已成功' : '未成功'} 打开`);
} catch (error) {
console.log(`打开URL失败: ${error instanceof Error ? error.message : String(error)}`);
}
};使用说明
AppLauncher是插件导出对象,可直接导入使用,导入后即可调用插件提供的所有方法,调用便捷高效,所有API均基于Promise实现,支持异步调用。
| 方法名 | 返回类型 | 描述 | 备注 | |--------------------------------------------------------------|------------------------------------------------------|----------------------|---------------| | canOpenUrl(options: CanOpenURLOptions) | Promise<CanOpenURLResult> | 检查是否可以使用给定的URL打开某个应用 | 需配置URL白名单 | | openUrl(options: OpenURLOptions) | Promise<OpenURLResult> | 打开指定的URL | 需申请网络权限、配置白名单 |
数据结构
CanOpenURLOptions
调用 canOpenUrl 方法时的入参对象,用于传入需要检查的URL。
| 属性 | 类型 | 描述 | 默认值 | 备注 | |-----|--------|----------|-----|-----| | url | string | 用户传入的url | 无 | 必填项 |
CanOpenURLResult
canOpenUrl 方法返回的结果对象,指示URL是否可被打开。
| 属性 | 类型 | 描述 | |-------|---------|------------| | value | boolean | URL是否可以被打开 |
OpenURLOptions
调用 openUrl 方法时的入参对象,用于传入需要打开的URL。
| 属性 | 类型 | 描述 | 默认值 | 备注 | |-----|--------|----------|-----|------------| | url | string | 用户传入的url | 无 | 必填项,需在白名单内 |
OpenURLResult
openUrl 方法返回的结果对象,指示URL是否打开成功。
| 属性 | 类型 | 描述 | |-----------|---------|------------| | completed | boolean | URL是否已成功打开 |
目录结构
|---- 目录
| |---- src/main # 插件的实现代码
| |----cpp # C++ 代码
| |----ets # ArkTS 代码
| |---- README.md # 说明文档
| |---- package.json # 配置文件
| |---- plugin.xml # 插件配置文件贡献代码
使用过程中发现任何问题都可以提 Issue ,当然,也非常欢迎发 PR 共建。
许可证
本插件基于 MIT License 开源,详见 LICENSE 文件。
