OpenHarmony 4.0 Release 应用自启动
OpenHarmony 4.0 Release 应用自启动 需求场景:部分场景,三方应用、定制应用或系统应用需要在开机时就自启动指定应用,比如某些货物售卖机、售票窗口、检票口、打卡机等。 提供方案: 方案一:因开机动画及锁屏功能正常时,都是先显示桌面(launcher),故提供在launcher 创建窗口时,将某指定应用(非服务类型)拉起。 代码解析: laucnher的窗口创建在工具类Windo
OpenHarmony 4.0 Release 应用自启动
需求场景:部分场景,三方应用、定制应用或系统应用需要在开机时就自启动指定应用,比如某些货物售卖机、售票窗口、检票口、打卡机等。
提供方案:
方案一:因开机动画及锁屏功能正常时,都是先显示桌面(launcher),故提供在launcher 创建窗口时,将某指定应用(非服务类型)拉起。
代码解析:
laucnher的窗口创建在工具类WindowManager.ts中,
我们可以将拉起操作放到createWindow或createRecentWindow中,以下是将拉起动作放到createRecentWindow中的示例:
1.为实现产品定制控制我们新增了DeviceUtil.isXxxProduct()来管控某个特定的产品,
2.为配合某xxx应用是否开机被拉起,特此新增persist.autostart.xxx属性来配合管控。
3.为配合网络场景,此外还添加了监听网络状态,以达到网络连接成功时再拉起指定应用。
if (DeviceUtil.isXxxProduct()) {
Log.showInfo(TAG, 'OneFan isXxxProduct');
// 先使用register接口注册订阅事件
this.netCon.register((error: BusinessError) => {
console.log("OneFan" + JSON.stringify(error));
});
// 订阅网络可用事件。调用register后,才能接收到此事件通知
this.netCon.on('netAvailable', (data: connection.NetHandle) => {
console.info("OneFan Succeeded to get data: " + JSON.stringify(data));
if (systemparameter.getSync('persist.autostart.xxx', '0') === '1') {
setTimeout(() => {
let want = {
"deviceId": "",
"bundleName": "com.xx.xxx",
"abilityName": "EntryAbility"
};
globalThis.desktopContext.startAbility(want).then(() => {
Log.showInfo(TAG, 'OneFan startAbility success');
// 使用unregister接口取消订阅
this.netCon.unregister((error: BusinessError) => {
console.log("OneFan" + JSON.stringify(error));
});
}).catch((error) => {
Log.showInfo(TAG, 'OneFan startAbility failed');
})
}, 500)
} else {
Log.showInfo(TAG, 'OneFan persist.autostart.xxx err');
}
});
}
默认情况下,我们不会配置persist.autostart.xxx属性,故开启不会自启动某个指定应用,只有在persist.autostart.xxx 为 1时且网络OK时才会启动某应用。
在4.1R及之后的版本实现开机自启动则建议直接使用AutoStartupCallback.onAutoStartupOn接口即可。可参考https://docs.openharmony.cn/pages/v4.1/zh-cn/application-dev/reference/apis-ability-kit/js-apis-inner-application-autoStartupCallback-sys.md
而相对于服务的自启动配置来说,就相对比较容易了,预安装配置到install_list.json,自启动配置(应用特权配置) 到install_list_capability.json,具体可参考docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/subsystems/subsys-app-privilege-config-guide.md/
更多推荐
所有评论(0)