openharmony 鸿蒙 js-apis-floatingBall

2026-08-25 浏览 (1)

@ohos.window.floatingBall (闪控球窗口)

该模块提供闪控球的基础功能,包括判断设备是否支持闪控球功能,以及创建闪控球控制器来启动、更新或停止闪控球。适用于跨应用的题目搜索、账单记录、商品比价、抢单、翻译场景,以及金融类应用的实时盯盘场景,以小窗模式呈现内容。闪控球以悬浮小组件形式显示在其他应用之上,即时呈现应用的关键信息。

说明:

  • 本模块首批接口从API version 20开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

  • 针对系统能力SystemCapability.Window.SessionManager,请先使用canIUse()接口判断当前设备是否支持此syscap及对应接口。

导入模块

import { floatingBall } from '@kit.ArkUI';

floatingBall.isFloatingBallEnabled

isFloatingBallEnabled(): boolean

判断当前设备是否支持闪控球功能。

系统能力: SystemCapability.Window.SessionManager

返回值:

类型说明
boolean当前设备是否支持闪控球功能。true表示支持,false则表示不支持。

示例:

let enable: boolean = floatingBall.isFloatingBallEnabled();
console.info('Floating ball enabled is: ' + enable);

floatingBall.create

create(config: FloatingBallConfiguration): Promise<FloatingBallController>

创建闪控球控制器,使用Promise异步回调。

系统能力: SystemCapability.Window.SessionManager

设备行为差异: 该接口在Tablet设备的非电脑模式、Phone设备下可正常调用,在其他设备、Tablet设备的电脑模式下调用返回801错误码。

参数:

参数名类型必填说明
configFloatingBallConfiguration创建闪控球控制器的参数。该参数不能为空,并且构造该参数的context不能为空。

返回值:

类型说明
Promise<FloatingBallController>Promise对象。返回当前创建的闪控球控制器。

错误码:

以下错误码的详细介绍请参见通用错误码窗口错误码

错误码ID错误信息
801Capability not supported.Failed to call the API due to limited device capabilities.
1300019Wrong parameters for operating the floating ball.
1300023Floating ball internal error.

示例:

import { BusinessError } from '@kit.BasicServicesKit';
import { common } from '@kit.AbilityKit';

let floatingBallController: floatingBall.FloatingBallController|undefined = undefined;
// 请在组件内获取context,确保this.getUIContext().getHostContext()返回的结果为UIAbilityContext
let ctx = this.getUIContext().getHostContext() as common.UIAbilityContext; 
let config: floatingBall.FloatingBallConfiguration = {
  context: ctx,
};
try {
  floatingBall.create(config).then((data: floatingBall.FloatingBallController) => {
    floatingBallController = data;
    console.info(`Succeeded in creating floating ball controller. Data: ${data}`);
  }).catch((err: BusinessError) => {
    console.error(`Failed to create floating ball controller. Cause:${err.code}, message:${err.message}`);
  });
} catch(e) {
  console.error(`Failed to create floating ball controller. Cause:${e.code}, message:${e.message}`);
}

FloatingBallConfiguration

创建闪控球控制器时需要提供的参数配置。

系统能力: SystemCapability.Window.SessionManager

名称类型只读可选说明
contextBaseContext表示上下文环境。

FloatingBallController

闪控球控制器实例,用于启动、更新、停止闪控球以及注册回调等操作。

下列API示例中都需先使用floatingBall.create()方法获取到闪控球控制器实例(即floatingBallController),再通过此实例调用对应方法。

系统能力: SystemCapability.Window.SessionManager

startFloatingBall

startFloatingBall(params: FloatingBallParams): Promise<void>

启动闪控球,使用Promise异步回调。

需要权限: ohos.permission.USE_FLOAT_BALL

系统能力: SystemCapability.Window.SessionManager

参数:

参数名类型必填说明
paramsFloatingBallParams启动闪控球的参数。

返回值:

类型说明
Promise<void>无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见通用错误码窗口错误码

错误码ID错误信息
201Permission verification failed, usually returned by VerifyAccessToken.
1300019Wrong parameters for operating the floating ball.
1300020Failed to create the floating ball window.
1300021Failed to start multiple floating ball windows.
1300022Repeated floating ball operation.
1300023Floating ball internal error.
1300024The floating ball window state is abnormal.
1300025The floating ball state does not support this operation.

示例:

import { BusinessError } from '@kit.BasicServicesKit';

let startParams: floatingBall.FloatingBallParams = {
  template: floatingBall.FloatingBallTemplate.EMPHATIC,
  title: 'title',
  content: 'content'
};
try {
  floatingBallController.startFloatingBall(startParams).then(() => {
    console.info('Succeeded in starting floating ball.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to start floating ball. Cause:${err.code}, message:${err.message}`);
  });
} catch(e) {
  console.error(`Failed to start floating ball. Cause:${e.code}, message:${e.message}`);
}

updateFloatingBall

updateFloatingBall(params: FloatingBallParams): Promise<void>

更新闪控球,使用Promise异步回调。

系统能力: SystemCapability.Window.SessionManager

参数:

参数名类型必填说明
paramsFloatingBallParams更新闪控球的参数。

返回值:

类型说明
Promise<void>无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见窗口错误码

错误码ID错误信息
1300002This window state is abnormal.
1300003This window manager service works abnormally.
1300004Unauthorized operation.
1300019Wrong parameters for operating the floating ball.
1300023Floating ball internal error.
1300024The floating ball window state is abnormal.
1300025The floating ball state does not support this operation.
1300027When updating the floating ball, the template type cannot be changed.
1300028Updating static template-based floating balls is not supported.

示例:

import { BusinessError } from '@kit.BasicServicesKit';

let updateParams: floatingBall.FloatingBallParams = {
  template: floatingBall.FloatingBallTemplate.EMPHATIC,
  title: 'title2',
  content: 'content2'
};
try {
  floatingBallController.updateFloatingBall(updateParams).then(() => {
    console.info('Succeeded in updating floating ball.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to update floating ball. Cause:${err.code}, message:${err.message}`);
  });
} catch(e) {
  console.error(`Failed to update floating ball. Cause:${e.code}, message:${e.message}`);
}

stopFloatingBall

stopFloatingBall(): Promise<void>

停止闪控球,使用Promise异步回调。

系统能力: SystemCapability.Window.SessionManager

返回值:

类型说明
Promise<void>无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见窗口错误码

错误码ID错误信息
1300022Repeated floating ball operation.
1300023Floating ball internal error.
1300024The floating ball window state is abnormal.

示例:

import { BusinessError } from '@kit.BasicServicesKit';

floatingBallController.stopFloatingBall().then(() => {
  console.info('Succeeded in stopping floating ball.');
}).catch((err: BusinessError) => {
  console.error(`Failed to stop floating ball. Cause:${err.code}, message:${err.message}`);
});

on('stateChange')

on(type: 'stateChange', callback: Callback<FloatingBallState>): void

注册闪控球生命周期状态变化的监听事件。不再使用时,取消监听以避免内存泄漏。

系统能力: SystemCapability.Window.SessionManager

参数:

参数名类型必填说明
typestring监听事件,固定为'stateChange',即闪控球生命周期状态变化事件。
callbackCallback<FloatingBallState>回调函数。返回当前的闪控球生命周期状态。

错误码:

以下错误码的详细介绍请参见窗口错误码

错误码ID错误信息
1300019Wrong parameters for operating the floating ball.
1300022Repeated floating ball operation.
1300023Floating ball internal error.
1300024The floating ball window state is abnormal.

示例:

let onStateChange = (state: floatingBall.FloatingBallState) => {
  console.info('Floating ball stateChange: ' + state);
};
try {
  floatingBallController.on('stateChange', onStateChange);
} catch(e) {
  console.error(`Failed to on stateChange floating ball. Cause:${e.code}, message:${e.message}`);
}

off('stateChange')

off(type: 'stateChange', callback?: Callback<FloatingBallState>): void

取消闪控球生命周期状态变化的监听事件。

系统能力: SystemCapability.Window.SessionManager

参数:

参数名类型必填说明
typestring监听事件,固定为'stateChange',即闪控球生命周期状态变化事件。
callbackCallback<FloatingBallState>回调函数。返回当前的闪控球生命周期状态。若传入参数,则停止该监听。若未传入参数,则停止所有闪控球生命周期状态变化的监听。

错误码:

以下错误码的详细介绍请参见窗口错误码

错误码ID错误信息
1300019Wrong parameters for operating the floating ball.
1300023Floating ball internal error.
1300024The floating ball window state is abnormal.

示例:

let onStateChange = (state: floatingBall.FloatingBallState) => {
  console.info('Floating ball stateChange: ' + state);
};
try {
  floatingBallController.off('stateChange', onStateChange);
} catch(e) {
  console.error(`Failed to off stateChange floating ball. Cause:${e.code}, message:${e.message}`);
}

on('click')

on(type: 'click', callback: Callback<void>): void

注册闪控球的点击监听事件,不使用时,取消监听以避免内存泄漏。

系统能力: SystemCapability.Window.SessionManager

参数:

参数名类型必填说明
typestring监听事件,固定为'click',即闪控球点击事件。
callbackCallback<void>回调函数。当点击闪控球事件发生时的回调。该回调函数不返回任何参数。

错误码:

以下错误码的详细介绍请参见窗口错误码

错误码ID错误信息
1300019Wrong parameters for operating the floating ball.
1300022Repeated floating ball operation.
1300023Floating ball internal error.
1300024The floating ball window state is abnormal.

示例:

let onClick = () => {
  console.info('Floating ball onClick');
};
try {
  floatingBallController.on('click', onClick);
} catch(e) {
  console.error(`Failed to on click floating ball. Cause:${e.code}, message:${e.message}`);
}

off('click')

off(type: 'click', callback?: Callback<void>): void

取消闪控球点击的监听事件。

系统能力: SystemCapability.Window.SessionManager

参数:

参数名类型必填说明
typestring监听事件,固定为'click',即闪控球点击事件。
callbackCallback<void>回调函数。当点击闪控球事件发生时的回调。该回调函数不返回任何参数。若传入参数,则关闭特定的监听。若未传入参数,则关闭所有闪控球点击的监听。

错误码:

以下错误码的详细介绍请参见窗口错误码

错误码ID错误信息
1300019Wrong parameters for operating the floating ball.
1300023Floating ball internal error.
1300024The floating ball window state is abnormal.

示例:

let onClick = () => {
  console.info('Floating ball onClick');
};
try {
  floatingBallController.off('click', onClick);
} catch(e) {
  console.error(`Failed to off click floating ball. Cause:${e.code}, message:${e.message}`);
}

getFloatingBallWindowInfo

getFloatingBallWindowInfo(): Promise<FloatingBallWindowInfo>

获得闪控球窗口信息,使用Promise异步回调。

系统能力: SystemCapability.Window.SessionManager

返回值:

类型说明
Promise<FloatingBallWindowInfo>Promise对象,返回闪控球窗口信息。

错误码:

以下错误码的详细介绍请参见窗口错误码

错误码ID错误信息
1300002This window state is abnormal.
1300003This window manager service works abnormally.
1300004Unauthorized operation.
1300023Floating ball internal error.
1300024The floating ball window state is abnormal.
1300025The floating ball state does not support this operation.

示例:

import { BusinessError } from '@kit.BasicServicesKit';

floatingBallController.getFloatingBallWindowInfo().then((data: floatingBall.FloatingBallWindowInfo) => {
  console.info('Succeeded in getting floating ball window info. Info: ' + JSON.stringify(data));
}).catch((err: BusinessError) => {
  console.error(`Failed to get floating ball window info. Cause code: ${err.code}, message: ${err.message}`);
});

restoreMainWindow

restoreMainWindow(want: Want): Promise<void>

恢复应用主窗口并加载指定页面。使用Promise异步回调。仅支持在点击闪控球后调用;若应用拥有ohos.permission.AUTO_RESTORE_MAIN_WINDOW权限,可以无需点击直接调用该接口。

需要权限: ohos.permission.USE_FLOAT_BALL

系统能力: SystemCapability.Window.SessionManager

参数:

参数名类型必填说明
wantWant加载指定页面的Want。

返回值:

类型说明
Promise<void>无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见通用错误码窗口错误码

错误码ID错误信息
201Permission verification failed, usually returned by VerifyAccessToken.
1300002This window state is abnormal.
1300003This window manager service works abnormally.
1300004Unauthorized operation.
1300019Wrong parameters for operating the floating ball.
1300023Floating ball internal error.
1300024The floating ball window state is abnormal.
1300025The floating ball state does not support this operation.
1300026Failed to restore the main window. Possible causes:
1. Invalid parameter. The provided bundleName does not match the caller's application bundleName.
2. The application lacks the ohos.permission.AUTO_RESTORE_MAIN_WINDOW permission, and no user interaction (click) on the floating ball has occurred.

示例:

import { BusinessError } from '@kit.BasicServicesKit';
import { Want } from '@kit.AbilityKit';

let want: Want = {
  bundleName: 'xxx.xxx.xxx',
  abilityName: 'EntryAbility'
};
try {
  floatingBallController.restoreMainWindow(want).then(() => {
    console.info('Succeeded in restoring floating ball main window.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to restore floating ball main window. Cause code: ${err.code}, message: ${err.message}`);
  });
} catch(e) {
  console.error(`Failed to create floating ball controller. Cause:${e.code}, message:${e.message}`);
}

setFloatingBallVisibilityInApp24+

setFloatingBallVisibilityInApp(isVisible: boolean): Promise<void>

设置闪控球在应用内是否可见。使用Promise异步回调。

  • 当应用处于多任务界面时(生命周期状态为PAUSED),闪控球不可见。
  • 默认情况(即未调用此接口设置时)和调用此接口传入true时:除多任务界面外,闪控球均可见。
  • 调用此接口传入false时:当应用处于前台(生命周期状态为SHOWN或者RESUMED)时,闪控球不可见;当应用处于后台(生命周期状态为HIDDEN)时,闪控球可见。

系统能力: SystemCapability.Window.SessionManager

模型约束: 此接口仅可在Stage模型下使用。

参数:

参数名类型必填说明
isVisiblebooleantrue表示闪控球在应用内可见;false表示闪控球在应用内不可见。

返回值:

类型说明
Promise<void>Promise对象,无返回结果。

错误码:

以下错误码的详细介绍请参见窗口错误码

错误码ID错误信息
1300003This window manager service works abnormally. Possible cause: Internal IPC error.
1300023Floating ball internal error. Possible cause: The floating ball controller is null.
1300024The floating ball window state is abnormal. Possible causes: The floating ball window has not been created or has been destroyed.

示例:

import { BusinessError } from '@kit.BasicServicesKit';

floatingBallController?.setFloatingBallVisibilityInApp(false).then(() => {
  console.info('Succeeded in setting floating ball visibility.');
}).catch((err: BusinessError) => {
  console.error(`Failed to set floating ball visibility. Cause code: ${err.code}, message: ${err.message}`);
});

FloatingBallParams

启动和更新闪控球的配置参数。

系统能力: SystemCapability.Window.SessionManager

名称类型只读可选说明
templateFloatingBallTemplate闪控球模板。
titlestring闪控球标题,不可为空字符串,大小不超过64字节。
contentstring闪控球内容,大小不超过64字节。不传入时默认为空字符串,不显示闪控球内容。
backgroundColorstring闪控球背景颜色,为不带透明度的十六进制颜色格式(例如'#008EF5'或'#FF008EF5'),不传入时闪控球跟随系统深浅色模式的默认背景色。
iconimage.PixelMap闪控球图标,图标像素的总字节数不超过192KB(图标像素的总字节数通过getPixelBytesNumber获取)。建议图标像素宽高为128px*128px。实际显示效果依赖于设备能力和闪控球UI样式。
textUpdateAnimationTypeFloatingBallTextUpdateAnimationType闪控球文本更新时的动画类型。默认为FloatingBallTextUpdateAnimationType.ANIMATION_NONE。
起始版本:26.0.0
模型约束: 此接口仅可在Stage模型下使用。

FloatingBallState

闪控球生命周期状态的枚举。

系统能力: SystemCapability.Window.SessionManager

名称说明
STARTED1表示闪控球启动。
STOPPED2表示闪控球停止。

FloatingBallTemplate

闪控球模板类型的枚举。

系统能力: SystemCapability.Window.SessionManager

名称说明
STATIC1静态布局,支持标题和图标。使用此模板时,FloatingBallParams中的title参数和icon参数必传。
NORMAL2普通文本布局,支持标题和内容。使用此模板时,FloatingBallParams中的title参数必传。
EMPHATIC3强调文本布局,支持图标、标题和内容。使用此模板时,FloatingBallParams中的title参数必传。
SIMPLE4纯文本布局,只支持标题。使用此模板时,FloatingBallParams中的title参数必传。

FloatingBallWindowInfo

闪控球窗口信息。

系统能力: SystemCapability.Window.SessionManager

名称类型只读可选说明
windowIdnumber闪控球窗口ID。

FloatingBallTextUpdateAnimationType

闪控球文本更新动画类型的枚举。

系统能力: SystemCapability.Window.SessionManager

模型约束: 此接口仅可在Stage模型下使用。

起始版本:26.0.0

名称说明
ANIMATION_NONE0无动画。
ANIMATION_OPACITY1淡入淡出动画。

你可能感兴趣的鸿蒙文章

openharmony 鸿蒙 arkts-apis-uicontext-contextmenucontroller

openharmony 鸿蒙 errorcode-canvas

openharmony 鸿蒙 capi-oh-nativexcomponent-native-xcomponent-oh-nativexcomponent

openharmony 鸿蒙 errorcode-bindSheet

openharmony 鸿蒙 js-apis-arkui-uiExtension-sys

openharmony 鸿蒙 capi-arkui-accessibility-arkui-accessibilityeventinfo

openharmony 鸿蒙 capi-arkui-rendernodeutils

openharmony 鸿蒙 capi-native-node-h-nodeattributetype-layoutcomponent

openharmony 鸿蒙 js-apis-arkui-node

openharmony 鸿蒙 capi-native-node-h

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/RzDwTQ2U