harmony 鸿蒙@ohos.display (屏幕属性)(系统接口)
@ohos.display (屏幕属性)(系统接口)
屏幕属性提供管理显示设备的一些基础能力,包括获取默认显示设备的信息,获取所有显示设备的信息以及监听显示设备的插拔行为。
说明:
本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
当前页面仅包含本模块的系统接口,其他公开接口参见@ohos.display (屏幕属性)。
导入模块
import { display } from '@kit.ArkUI';
display.hasPrivateWindow9+
hasPrivateWindow(displayId: number): boolean
查询指定display对象上是否有可见的隐私窗口。可通过setWindowPrivacyMode()接口设置隐私窗口。隐私窗口内容将无法被截屏或录屏。
系统接口: 此接口为系统接口。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
displayId | number | 是 | 显示设备的id,该参数仅支持整数输入。该参数大于等于0。 |
返回值:
类型 | 说明 |
---|---|
boolean | 查询的display对象上是否有可见的隐私窗口。true表示此display对象上有可见的隐私窗口,false表示此display对象上没有可见的隐私窗口。 |
错误码:
错误码ID | 错误信息 |
---|---|
202 | Permission verification failed. A non-system application calls a system API. |
401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
1400003 | This display manager service works abnormally. |
示例:
import { display } from '@kit.ArkUI';
let displayClass: display.Display|null = null;
try {
displayClass = display.getDefaultDisplaySync();
let ret: boolean = true;
try {
ret = display.hasPrivateWindow(displayClass.id);
} catch (exception) {
console.error('Failed to check has privateWindow or not. Code: ' + JSON.stringify(exception));
}
if (ret == undefined) {
console.log("Failed to check has privateWindow or not.");
}
if (ret) {
console.log("There has privateWindow.");
} else if (!ret) {
console.log("There has no privateWindow.");
}
} catch (exception) {
console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));
}
display.on(‘privateModeChange’)10+
on(type: ‘privateModeChange’, callback: Callback<boolean>): void
开启屏幕隐私模式变化的监听。当屏幕前台有隐私窗口,则屏幕处于隐私模式,屏幕中的隐私窗口内容无法被截屏或录屏。
系统接口: 此接口为系统接口。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 监听事件,固定为’privateModeChange’,表示屏幕隐私模式状态发生变化。 |
callback | Callback<boolean> | 是 | 回调函数。表示屏幕隐私模式是否改变。true表示屏幕由非隐私窗口模式变为隐私模式,false表示屏幕由隐私模式变为非隐私模式。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
错误码ID | 错误信息 |
---|---|
202 | Permission verification failed. A non-system application calls a system API. |
401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
示例:
import { Callback } from '@kit.BasicServicesKit';
let callback: Callback<boolean> = (data: boolean) => {
console.info('Listening enabled. Data: ' + JSON.stringify(data));
};
try {
display.on("privateModeChange", callback);
} catch (exception) {
console.error('Failed to register callback. Code: ' + JSON.stringify(exception));
}
display.off(‘privateModeChange’)10+
off(type: ‘privateModeChange’, callback?: Callback<boolean>): void
关闭屏幕隐私模式变化的监听。当屏幕前台有隐私窗口,则屏幕处于隐私模式,屏幕中的隐私窗口内容无法被截屏或录屏。
系统接口: 此接口为系统接口。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 监听事件,固定为’privateModeChange’,表示屏幕隐私模式状态发生变化。 |
callback | Callback<boolean> | 否 | 需要取消注册的回调函数。表示屏幕隐私模式是否改变。true表示屏幕由非隐私窗口模式变为隐私模式,false表示屏幕由隐私模式变为非隐私模式。若无此参数,则取消注册屏幕隐私模式变化监听的所有回调函数。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
错误码ID | 错误信息 |
---|---|
202 | Permission verification failed. A non-system application calls a system API. |
401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
示例:
try {
display.off("privateModeChange");
} catch (exception) {
console.error('Failed to unregister callback. Code: ' + JSON.stringify(exception));
}
display.setFoldDisplayMode10+
setFoldDisplayMode(mode: FoldDisplayMode): void
更改可折叠设备的显示模式,不适用于2in1设备。
系统接口: 此接口为系统接口。
系统能力: SystemCapability.Window.SessionManager
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
mode | FoldDisplayMode | 是 | 可折叠设备的显示模式。 |
错误码:
错误码ID | 错误信息 |
---|---|
202 | Permission verification failed. A non-system application calls a system API. |
401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
1400003 | This display manager service works abnormally. |
示例:
import { display } from '@kit.ArkUI';
try {
let mode: display.FoldDisplayMode = display.FoldDisplayMode.FOLD_DISPLAY_MODE_FULL;
display.setFoldDisplayMode(mode);
} catch (exception) {
console.error('Failed to change the fold display mode. Code: ' + JSON.stringify(exception));
}
display.setFoldDisplayMode19+
setFoldDisplayMode(mode: FoldDisplayMode, reason: string): void
更改可折叠设备的显示模式,并指明更改原因,不适用于2in1设备。
系统接口: 此接口为系统接口。
系统能力: SystemCapability.Window.SessionManager
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
mode | FoldDisplayMode | 是 | 可折叠设备的显示模式。 |
reason | string | 否 | 更改显示模式的原因。不设置,则默认为空字符串。 |
错误码:
错误码ID | 错误信息 |
---|---|
202 | Permission verification failed. A non-system application calls a system API. |
1400003 | This display manager service works abnormally. |
示例:
import { display } from '@kit.ArkUI';
try {
let mode: display.FoldDisplayMode = display.FoldDisplayMode.FOLD_DISPLAY_MODE_MAIN;
display.setFoldDisplayMode(mode, 'backSelfie');
} catch (exception) {
console.error(`Failed to change the fold display mode. Code: ${exception}`);
}
display.setFoldStatusLocked11+
setFoldStatusLocked(locked: boolean): void
设置可折叠设备当前折叠状态的锁定状态。
系统接口: 此接口为系统接口。
系统能力: SystemCapability.Window.SessionManager
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
locked | boolean | 是 | 可折叠设备的折叠状态是否锁定。true表示锁定,false表示不锁定。 |
错误码:
错误码ID | 错误信息 |
---|---|
202 | Permission verification failed. A non-system application calls a system API. |
401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
1400003 | This display manager service works abnormally. |
示例:
import { display } from '@kit.ArkUI';
try {
let locked: boolean = false;
display.setFoldStatusLocked(locked);
} catch (exception) {
console.error('Failed to change the fold status locked mode. Code: ' + JSON.stringify(exception));
}
display.addVirtualScreenBlocklist18+
addVirtualScreenBlocklist(windowIds: Array<number>): Promise<void>
将窗口添加到禁止投屏显示的名单中,被添加的窗口无法在投屏时显示。仅对应用主窗或系统窗口生效。使用Promise异步回调。
系统接口: 此接口为系统接口。
系统能力: SystemCapability.Window.SessionManager
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
windowIds | Array<number> | 是 | 窗口id列表,传入子窗窗口id时不生效。窗口id为大于0的整数。推荐使用getWindowProperties()方法获取窗口id属性。 |
返回值:
类型 | 说明 |
---|---|
Promise<void> | 无返回结果的Promise对象。 |
错误码:
错误码ID | 错误信息 |
---|---|
202 | Permission verification failed. A non-system application calls a system API. |
401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. |
801 | Capability not supported.Function addVirtualScreenBlocklist can not work correctly due to limited device capabilities. |
1400003 | This display manager service works abnormally. |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
import { display, window } from '@kit.ArkUI';
export default class EntryAbility extends UIAbility {
// ...
onWindowStageCreate(windowStage: window.WindowStage) {
// ...
let windowId = windowStage.getMainWindowSync().getWindowProperties().id;
let windowIds = [windowId];
let promise = display.addVirtualScreenBlocklist(windowIds);
promise.then(() => {
console.info('Succeeded in adding virtual screen blocklist.');
}).catch((err: BusinessError) => {
console.error('Failed to add virtual screen blocklist. Code: ' + JSON.stringify(err));
})
}
}
display.removeVirtualScreenBlocklist18+
removeVirtualScreenBlocklist(windowIds: Array<number>): Promise<void>
将窗口从禁止投屏显示的名单中移除,被移除的窗口可以在投屏时显示。仅对应用主窗或系统窗口生效。使用Promise异步回调。
系统接口: 此接口为系统接口。
系统能力: SystemCapability.Window.SessionManager
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
windowIds | Array<number> | 是 | 窗口id列表,传入子窗窗口id时不生效。窗口id为大于0的整数。推荐使用getWindowProperties()方法获取窗口id属性。 |
返回值:
类型 | 说明 |
---|---|
Promise<void> | 无返回结果的Promise对象。 |
错误码:
错误码ID | 错误信息 |
---|---|
202 | Permission verification failed. A non-system application calls a system API. |
401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. |
801 | Capability not supported.Function removeVirtualScreenBlocklist can not work correctly due to limited device capabilities. |
1400003 | This display manager service works abnormally. |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
import { display, window } from '@kit.ArkUI';
export default class EntryAbility extends UIAbility {
// ...
onWindowStageCreate(windowStage: window.WindowStage) {
// ...
let windowId = windowStage.getMainWindowSync().getWindowProperties().id;
let windowIds = [windowId];
let promise = display.addVirtualScreenBlocklist(windowIds);
promise.then(() => {
console.info('Succeeded in adding virtual screen blocklist.');
}).catch((err: BusinessError) => {
console.error('Failed to add virtual screen blocklist. Code: ' + JSON.stringify(err));
})
promise = display.removeVirtualScreenBlocklist(windowIds);
promise.then(() => {
console.info('Succeeded in removing virtual screen blocklist.');
}).catch((err: BusinessError) => {
console.error('Failed to remove virtual screen blocklist. Code: ' + JSON.stringify(err));
})
}
}
Display
屏幕实例。描述display对象的属性和方法。
下列API示例中都需先使用getAllDisplays()、getDefaultDisplaySync()中的任一方法获取到Display实例,再通过此实例调用对应方法。
hasImmersiveWindow11+
hasImmersiveWindow(callback: AsyncCallback<boolean>): void
判断当前屏幕是否包含沉浸式窗口,使用callback异步回调。
系统接口: 此接口为系统接口。
系统能力: SystemCapability.Window.SessionManager
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示当前屏幕包含沉浸式窗口,false表示不包含。 |
错误码:
错误码ID | 错误信息 |
---|---|
202 | Permission verification failed. A non-system application calls a system API. |
801 | Capability not supported on this device. |
1400001 | Invalid display or screen. |
1400003 | This display manager service works abnormally. |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
import { display } from '@kit.ArkUI';
let displayClass: display.Display|null = null;
displayClass = display.getDefaultDisplaySync();
displayClass.hasImmersiveWindow((err: BusinessError, data) => {
const errCode: number = err.code;
if (errCode) {
console.error('Failed to check whether there is immersive window. Code: ' + JSON.stringify(err));
return;
}
console.info('Succeeded in checking whether there is immersive window. data: ' + JSON.stringify(data));
});
hasImmersiveWindow11+
hasImmersiveWindow(): Promise<boolean>
判断当前屏幕是否包含沉浸式窗口,使用Promise异步回调。
系统接口: 此接口为系统接口。
系统能力: SystemCapability.Window.SessionManager
返回值:
类型 | 说明 |
---|---|
Promise<boolean> | Promise对象。返回true表示当前屏幕包含沉浸式窗口,false表示不包含。 |
错误码:
错误码ID | 错误信息 |
---|---|
202 | Permission verification failed. A non-system application calls a system API. |
801 | Capability not supported on this device. |
1400001 | Invalid display or screen. |
1400003 | This display manager service works abnormally. |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
import { display } from '@kit.ArkUI';
let displayClass: display.Display|null = null;
displayClass = display.getDefaultDisplaySync();
let promise = displayClass.hasImmersiveWindow();
promise.then((data) => {
console.info('Succeeded in checking whether there is immersive window. data: ' + JSON.stringify(data));
}).catch((err: BusinessError) => {
console.error('Failed to check whether there is immersive window. Code: ' + JSON.stringify(err));
})
你可能感兴趣的鸿蒙文章
harmony 鸿蒙ARKUI_TextPickerCascadeRangeContent
harmony 鸿蒙ARKUI_TextPickerRangeContent
harmony 鸿蒙ArkUI_AnimateCompleteCallback
harmony 鸿蒙ArkUI_ContextCallback
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦