diff --git a/uni_modules/uni-getbatteryinfo/utssdk/app-harmony/index.uts b/uni_modules/uni-getbatteryinfo/utssdk/app-harmony/index.uts new file mode 100644 index 0000000000000000000000000000000000000000..7134a4c22bd3d4b3d6cf7ed41531b1c3384ee79d --- /dev/null +++ b/uni_modules/uni-getbatteryinfo/utssdk/app-harmony/index.uts @@ -0,0 +1,27 @@ +import batteryInfo from '@ohos.batteryInfo'; +import { GetBatteryInfo, GetBatteryInfoOptions, GetBatteryInfoSuccess, GetBatteryInfoResult, GetBatteryInfoSync } from '../interface.uts'; + +export const getBatteryInfoSync : GetBatteryInfoSync = function () : GetBatteryInfoResult { + return { + level: batteryInfo.batterySOC, + isCharging: batteryInfo.chargingStatus === batteryInfo.BatteryChargeState.ENABLE || batteryInfo.chargingStatus === batteryInfo.BatteryChargeState.FULL, + }; +} + +export const getBatteryInfo : GetBatteryInfo = function (options : GetBatteryInfoOptions) { + const batteryInfoResult : GetBatteryInfoSuccess = { + errMsg: "getBatteryInfo:ok", + level: batteryInfo.batterySOC, + isCharging: batteryInfo.chargingStatus === batteryInfo.BatteryChargeState.ENABLE || batteryInfo.chargingStatus === batteryInfo.BatteryChargeState.FULL, + } + try { + options.success && options.success(batteryInfoResult) + } catch (e) { + console.error(e) + } + try { + options.complete && options.complete(batteryInfoResult) + } catch (e) { + console.error(e) + } +} \ No newline at end of file diff --git a/uni_modules/uni-getbatteryinfo/utssdk/interface.uts b/uni_modules/uni-getbatteryinfo/utssdk/interface.uts index 1350545b3a06980b2bc169a73243cece6b18c2a9..0caaa20ec8359a3b2af04a7972724c48f4a664bb 100644 --- a/uni_modules/uni-getbatteryinfo/utssdk/interface.uts +++ b/uni_modules/uni-getbatteryinfo/utssdk/interface.uts @@ -1,51 +1,51 @@ export type GetBatteryInfoSuccess = { - errMsg : string, - /** - * 设备电量,范围1 - 100 - */ - level : number, - /** - * 是否正在充电中 - */ - isCharging : boolean + errMsg: string, + /** + * 设备电量,范围1 - 100 + */ + level: number, + /** + * 是否正在充电中 + */ + isCharging: boolean } export type GetBatteryInfoOptions = { - /** - * 接口调用结束的回调函数(调用成功、失败都会执行) - */ - success ?: (res : GetBatteryInfoSuccess) => void - /** - * 接口调用失败的回调函数 - */ - fail ?: (res : UniError) => void - /** - * 接口调用成功的回调 - */ - complete ?: (res : any) => void + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + success?: (res: GetBatteryInfoSuccess) => void + /** + * 接口调用失败的回调函数 + */ + fail?: (res: UniError) => void + /** + * 接口调用成功的回调 + */ + complete?: (res: any) => void } export type GetBatteryInfoResult = { - /** - * 设备电量,范围1 - 100 - */ - level : number, - /** - * 是否正在充电中 - */ - isCharging : boolean + /** + * 设备电量,范围1 - 100 + */ + level: number, + /** + * 是否正在充电中 + */ + isCharging: boolean } /** * 错误码 * - 1001 getAppContext is null */ -export type GetBatteryInfoErrorCode = 1001 ; +export type GetBatteryInfoErrorCode = 1001 | 1002; /** * GetBatteryInfo 的错误回调参数 */ export interface GetBatteryInfoFail extends IUniError { - errCode : GetBatteryInfoErrorCode + errCode: GetBatteryInfoErrorCode }; /** @@ -60,88 +60,88 @@ export interface GetBatteryInfoFail extends IUniError { * @assert () => success({errCode: 0, errSubject: "uni-getBatteryInfo", errMsg: "getBatteryInfo:ok", level: 60, isCharging: false }) * @assert () => fail({errCode: 1001, errSubject: "uni-getBatteryInfo", errMsg: "getBatteryInfo:fail getAppContext is null" }) */ -export type GetBatteryInfo = (options : GetBatteryInfoOptions) => void +export type GetBatteryInfo = (options: GetBatteryInfoOptions) => void export type GetBatteryInfoSync = () => GetBatteryInfoResult interface Uni { - /** - * 获取电池电量信息 - * - * @example - * ```typescript - * uni.getBatteryInfo({ - * success(res) { - * console.log(res); - * } - * }) - * ``` - * @remark - * - 该接口需要同步调用 - * @uniPlatform { - * "app": { - * "android": { - * "osVer": "4.4.4", - * "uniVer": "3.6.11", - * "unixVer": "3.9.0" - * }, - * "ios": { - * "osVer": "12.0", - * "uniVer": "3.6.11", - * "unixVer": "4.11" - * }, + /** + * 获取电池电量信息 + * + * @example + * ```typescript + * uni.getBatteryInfo({ + * success(res) { + * console.log(res); + * } + * }) + * ``` + * @remark + * - 该接口需要同步调用 + * @uniPlatform { + * "app": { + * "android": { + * "osVer": "4.4.4", + * "uniVer": "3.6.11", + * "unixVer": "3.9.0" + * }, + * "ios": { + * "osVer": "12.0", + * "uniVer": "3.6.11", + * "unixVer": "4.11" + * }, * "harmony": { - * "osVer": "x", - * "uniVer": "x", + * "osVer": "3.0", + * "uniVer": "4.23", * "unixVer": "x" * } - * }, - * "web": { - * "uniVer": "3.6.11", - * "unixVer": "4.0" - * } - * } - * @uniVueVersion 2,3 //支持的vue版本 - * - */ - getBatteryInfo (options : GetBatteryInfoOptions) : void, - /** - * 同步获取电池电量信息 - * - * @example - * ```typescript - * uni.getBatteryInfo() - * ``` - * @remark - * - 该接口需要同步调用 - * @uniPlatform { - * "app": { - * "android": { - * "osVer": "4.4.4", - * "uniVer": "3.6.11", - * "unixVer": "3.9.0" - * }, - * "ios": { - * "osVer": "12.0", - * "uniVer": "3.6.11", - * "unixVer": "4.11" - * }, + * }, + * "web": { + * "uniVer": "3.6.11", + * "unixVer": "4.0" + * } + * } + * @uniVueVersion 2,3 //支持的vue版本 + * + */ + getBatteryInfo(options: GetBatteryInfoOptions): void, + /** + * 同步获取电池电量信息 + * + * @example + * ```typescript + * uni.getBatteryInfo() + * ``` + * @remark + * - 该接口需要同步调用 + * @uniPlatform { + * "app": { + * "android": { + * "osVer": "4.4.4", + * "uniVer": "3.6.11", + * "unixVer": "3.9.0" + * }, + * "ios": { + * "osVer": "12.0", + * "uniVer": "3.6.11", + * "unixVer": "4.11" + * }, * "harmony": { - * "osVer": "x", - * "uniVer": "x", + * "osVer": "3.0", + * "uniVer": "4.23", * "unixVer": "x" * } - * }, - * "web": { - * "uniVer": "3.6.11", - * "unixVer": "4.0" - * } - * } - * @uniVueVersion 2,3 //支持的vue版本 - * - */ - getBatteryInfoSync():GetBatteryInfoResult + * }, + * "web": { + * "uniVer": "3.6.11", + * "unixVer": "4.0" + * } + * } + * @uniVueVersion 2,3 //支持的vue版本 + * + */ + getBatteryInfoSync(): GetBatteryInfoResult } diff --git a/uni_modules/uni-getbatteryinfo/utssdk/unierror.uts b/uni_modules/uni-getbatteryinfo/utssdk/unierror.uts index 511c66cc0f6627e4e5e72b478fec1163c56ce92c..1ed635c172110b06518b3d422790fb29d9c40114 100644 --- a/uni_modules/uni-getbatteryinfo/utssdk/unierror.uts +++ b/uni_modules/uni-getbatteryinfo/utssdk/unierror.uts @@ -1,34 +1,35 @@ -import { GetBatteryInfoErrorCode, GetBatteryInfoFail } from "./interface.uts" -/** - * 错误主题 - */ -export const UniErrorSubject = 'uni-getBatteryInfo'; - - -/** - * 错误信息 - * @UniError - */ -export const UniErrors : Map = new Map([ - /** - * 错误码及对应的错误信息 - */ - [1001, 'getBatteryInfo:fail getAppContext is null'], -]); - - -/** - * 错误对象实现 - */ -export class GetBatteryInfoFailImpl extends UniError implements GetBatteryInfoFail { - - /** - * 错误对象构造函数 - */ - constructor(errCode : GetBatteryInfoErrorCode) { - super(); - this.errSubject = UniErrorSubject; - this.errCode = errCode; - this.errMsg = UniErrors[errCode] ?? ""; - } -} \ No newline at end of file +import { GetBatteryInfoErrorCode, GetBatteryInfoFail } from "./interface.uts" +/** + * 错误主题 + */ +export const UniErrorSubject = 'uni-getBatteryInfo'; + + +/** + * 错误信息 + * @UniError + */ +export const UniErrors : Map = new Map([ + /** + * 错误码及对应的错误信息 + */ + [1001, 'getBatteryInfo:fail getAppContext is null'], + [1002, 'getBatteryInfo:fail not support'], +]); + + +/** + * 错误对象实现 + */ +export class GetBatteryInfoFailImpl extends UniError implements GetBatteryInfoFail { + override errCode : GetBatteryInfoErrorCode; + /** + * 错误对象构造函数 + */ + constructor(errCode : GetBatteryInfoErrorCode) { + super(); + this.errSubject = UniErrorSubject; + this.errCode = errCode; + this.errMsg = UniErrors[errCode] ?? ""; + } +} diff --git a/uni_modules/uni-usercapturescreen/utssdk/app-harmony/index.uts b/uni_modules/uni-usercapturescreen/utssdk/app-harmony/index.uts new file mode 100644 index 0000000000000000000000000000000000000000..5e415237c89064cd3d3607520deee3a392300a7a --- /dev/null +++ b/uni_modules/uni-usercapturescreen/utssdk/app-harmony/index.uts @@ -0,0 +1,87 @@ +import { display } from '@kit.ArkUI'; +import { window } from '@kit.ArkUI'; +import { Callback, BusinessError } from '@kit.BasicServicesKit'; + +import { getAbilityContext, UTSHarmony } from '@dcloudio/uni-runtime'; + +import { + OnUserCaptureScreen, UserCaptureScreenCallback, + OffUserCaptureScreen, + SetUserCaptureScreen, SetUserCaptureScreenOptions, SetUserCaptureScreenSuccess +} from '../interface.uts'; + +const onUserCaptureScreenCallbacks: Function[] = [] + +const harmonyCaptureStatusChange: Callback = (captureStatus: boolean) => { + if (captureStatus) { + onUserCaptureScreenCallbacks.forEach(cb => { + typeof cb === 'function' && cb() + }) + } +} + +display.on('captureStatusChange', harmonyCaptureStatusChange) + +export const onUserCaptureScreen: OnUserCaptureScreen = function (callback: UserCaptureScreenCallback | null) { + if (callback) { + onUserCaptureScreenCallbacks.push(callback) + } +} + +export const offUserCaptureScreen: OffUserCaptureScreen = function (callback: UserCaptureScreenCallback | null) { + if (callback) { + const index = onUserCaptureScreenCallbacks.indexOf(callback) + if (index > -1) { + onUserCaptureScreenCallbacks.splice(index, 1) + } + } +} + +export const setUserCaptureScreen: SetUserCaptureScreen = function (options: SetUserCaptureScreenOptions) { + const errSubject = 'uni-usercapturescreen' + const setUserCaptureScreenSuccess: SetUserCaptureScreenSuccess = {} + window.getLastWindow(getAbilityContext()!, (err, window) => { + const errCode: number = err.code; + if (errCode) { + options.fail?.({ + errCode: (err as BusinessError).code, + errSubject, + errMsg: `setUserCaptureScreen:fail ${(err as BusinessError).message}` + } as IUniError) + options.complete?.(setUserCaptureScreenSuccess); + return; + } else { + try { + UTSHarmony.requestSystemPermission(['ohos.permission.PRIVACY_WINDOW'], (allRight: boolean) => { + if (allRight) { + window.setWindowPrivacyMode(!options.enable, (err: BusinessError) => { + const errCode: number = err.code; + if (errCode) { + options.fail?.({ + errCode: err.code, + errSubject, + errMsg: `setUserCaptureScreen:fail ${err.message}` + } as IUniError) + options.complete?.(setUserCaptureScreenSuccess); + return; + } + options.success?.(setUserCaptureScreenSuccess); + options.complete?.(setUserCaptureScreenSuccess); + }); + } else { + throw new Error('permission denied') + } + }, () => { + throw new Error('permission denied') + }) + } catch (err) { + options.fail?.({ + errCode: (err as BusinessError).code, + errSubject, + errMsg: `setUserCaptureScreen:fail ${(err as BusinessError).message}` + } as IUniError) + options.complete?.(setUserCaptureScreenSuccess); + } + } + }) +} diff --git a/uni_modules/uni-usercapturescreen/utssdk/interface.uts b/uni_modules/uni-usercapturescreen/utssdk/interface.uts index 90b89cf58ed2e5991399b5d75f89eb03447e551e..e8a3611ccfbc1760aea4af4be91debc2d3577a00 100644 --- a/uni_modules/uni-usercapturescreen/utssdk/interface.uts +++ b/uni_modules/uni-usercapturescreen/utssdk/interface.uts @@ -1,170 +1,170 @@ /** * uni.onUserCaptureScreen/uni.offUserCaptureScreen回调参数 */ -export type OnUserCaptureScreenCallbackResult = { + export type OnUserCaptureScreenCallbackResult = { + /** + * 截屏文件路径(仅Android返回) + */ + path ?: string + } + /** - * 截屏文件路径(仅Android返回) + * uni.onUserCaptureScreen/uni.offUserCaptureScreen回调函数定义 */ - path ?: string -} - -/** - * uni.onUserCaptureScreen/uni.offUserCaptureScreen回调函数定义 - */ -export type UserCaptureScreenCallback = (res : OnUserCaptureScreenCallbackResult) => void - -export type OnUserCaptureScreen = (callback : UserCaptureScreenCallback | null) => void + export type UserCaptureScreenCallback = (res : OnUserCaptureScreenCallbackResult) => void -export type OffUserCaptureScreen = (callback : UserCaptureScreenCallback | null) => void + export type OnUserCaptureScreen = (callback : UserCaptureScreenCallback | null) => void -/** - * uni.setUserCaptureScreen成功回调参数 - */ -export type SetUserCaptureScreenSuccess = { -} - - -/** - * uni.setUserCaptureScreen成功回调函数定义 - */ -export type SetUserCaptureScreenSuccessCallback = (res : SetUserCaptureScreenSuccess) => void + export type OffUserCaptureScreen = (callback : UserCaptureScreenCallback | null) => void -/** - * uni.setUserCaptureScreen失败回调函数定义 - */ -export type SetUserCaptureScreenFailCallback = (res : UniError) => void - -/** - * uni.setUserCaptureScreen完成回调函数定义 - */ -export type SetUserCaptureScreenCompleteCallback = (res : any) => void + /** + * uni.setUserCaptureScreen成功回调参数 + */ + export type SetUserCaptureScreenSuccess = { + } -/** - * uni.setUserCaptureScreen参数 - */ -export type SetUserCaptureScreenOptions = { - /** - * true: 允许用户截屏 false: 不允许用户截屏,防止用户截屏到应用页面内容 - */ - enable : boolean; /** - * 接口调用成功的回调函数 - */ - // success : SetUserCaptureScreenSuccessCallback | null, - success ?: SetUserCaptureScreenSuccessCallback, + * uni.setUserCaptureScreen成功回调函数定义 + */ + export type SetUserCaptureScreenSuccessCallback = (res : SetUserCaptureScreenSuccess) => void + /** - * 接口调用失败的回调函数 - */ - // fail : SetUserCaptureScreenFailCallback | null, - fail ?: SetUserCaptureScreenFailCallback, + * uni.setUserCaptureScreen失败回调函数定义 + */ + export type SetUserCaptureScreenFailCallback = (res : IUniError) => void + /** - * 接口调用结束的回调函数(调用成功、失败都会执行) - */ - // complete : SetUserCaptureScreenSuccessCallback | SetUserCaptureScreenFailCallback | null - complete ?: SetUserCaptureScreenCompleteCallback -} + * uni.setUserCaptureScreen完成回调函数定义 + */ + export type SetUserCaptureScreenCompleteCallback = (res : any) => void -/** - * 错误码 - * - 12001 "setUserCaptureScreen:system not support" - * - 12010 "setUserCaptureScreen:system internal error" - */ -export type SetUserCaptureScreenErrorCode = 12001 | 12010; -/** - * SetUserCaptureScreen 的错误回调参数 - */ -export interface SetUserCaptureScreenFail extends IUniError { - errCode : SetUserCaptureScreenErrorCode -}; + /** + * uni.setUserCaptureScreen参数 + */ -export type SetUserCaptureScreen = (options : SetUserCaptureScreenOptions) => void + export type SetUserCaptureScreenOptions = { + /** + * true: 允许用户截屏 false: 不允许用户截屏,防止用户截屏到应用页面内容 + */ + enable : boolean; + /** + * 接口调用成功的回调函数 + */ + // success : SetUserCaptureScreenSuccessCallback | null, + success ?: SetUserCaptureScreenSuccessCallback, + /** + * 接口调用失败的回调函数 + */ + // fail : SetUserCaptureScreenFailCallback | null, + fail ?: SetUserCaptureScreenFailCallback, + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + // complete : SetUserCaptureScreenSuccessCallback | SetUserCaptureScreenFailCallback | null + complete ?: SetUserCaptureScreenCompleteCallback + } -export interface Uni { - /** - * 开启截屏监听 - * - * @param {UserCaptureScreenCallback} callback - * @tutorial https://uniapp.dcloud.net.cn/api/system/capture-screen.html#onusercapturescreen - * @uniPlatform { - * "app": { - * "android": { - * "osVer": "4.4.4", - * "uniVer": "3.7.7", - * "unixVer": "3.9.0" - * }, - * "ios": { - * "osVer": "12.0", - * "uniVer": "3.7.7", - * "unixVer": "4.11" - * }, - * "harmony": { - * "osVer": "x", - * "uniVer": "x", - * "unixVer": "x" - * } - * } - * } - * @uniVersion 3.7.7 - * @uniVueVersion 2,3 //支持的vue版本 - * @autotest { expectCallback: true } - */ - onUserCaptureScreen(callback : UserCaptureScreenCallback | null) : void, /** - * 关闭截屏监听 - * - * @param {UserCaptureScreenCallback} callback - * @tutorial https://uniapp.dcloud.net.cn/api/system/capture-screen.html#offusercapturescreen - * @uniPlatform { - * "app": { - * "android": { - * "osVer": "4.4.4", - * "uniVer": "3.7.7", - * "unixVer": "3.9.0" - * }, - * "ios": { - * "osVer": "12.0", - * "uniVer": "3.7.7", - * "unixVer": "4.11" - * }, - * "harmony": { - * "osVer": "x", - * "uniVer": "x", - * "unixVer": "x" - * } - * } - * } - * @uniVersion 3.7.7 - * @uniVueVersion 2,3 //支持的vue版本 - * @autotest { expectCallback: true } + * 错误码 + * - 12001 "setUserCaptureScreen:system not support" + * - 12010 "setUserCaptureScreen:system internal error" */ - offUserCaptureScreen(callback : UserCaptureScreenCallback | null) : void, + export type SetUserCaptureScreenErrorCode = 12001 | 12010; /** - * 设置防截屏 - * - * @param {SetUserCaptureScreenOptions} options - * @tutorial https://uniapp.dcloud.net.cn/api/system/capture-screen.html#setusercapturescreen - * @uniPlatform { - * "app": { - * "android": { - * "osVer": "4.4.4", - * "uniVer": "3.7.7", - * "unixVer": "3.9.0" - * }, - * "ios": { - * "osVer": "13.0", - * "uniVer": "3.7.7", - * "unixVer": "4.11" - * }, - * "harmony": { - * "osVer": "x", - * "uniVer": "x", - * "unixVer": "x" - * } - * } - * } - * @uniVersion 3.7.7 - * @uniVueVersion 2,3 //支持的vue版本 + * SetUserCaptureScreen 的错误回调参数 */ - setUserCaptureScreen(options : SetUserCaptureScreenOptions) : void -} + export interface SetUserCaptureScreenFail extends IUniError { + errCode : SetUserCaptureScreenErrorCode + }; + + export type SetUserCaptureScreen = (options : SetUserCaptureScreenOptions) => void + + export interface Uni { + /** + * 开启截屏监听 + * + * @param {UserCaptureScreenCallback} callback + * @tutorial https://uniapp.dcloud.net.cn/api/system/capture-screen.html#onusercapturescreen + * @uniPlatform { + * "app": { + * "android": { + * "osVer": "4.4.4", + * "uniVer": "3.7.7", + * "unixVer": "3.9.0" + * }, + * "ios": { + * "osVer": "12.0", + * "uniVer": "3.7.7", + * "unixVer": "4.11" + * }, + * "harmony": { + * "osVer": "3.0", + * "uniVer": "4.25", + * "unixVer": "x" + * } + * } + * } + * @uniVersion 3.7.7 + * @uniVueVersion 2,3 //支持的vue版本 + * @autotest { expectCallback: true } + */ + onUserCaptureScreen(callback : UserCaptureScreenCallback | null) : void, + /** + * 关闭截屏监听 + * + * @param {UserCaptureScreenCallback} callback + * @tutorial https://uniapp.dcloud.net.cn/api/system/capture-screen.html#offusercapturescreen + * @uniPlatform { + * "app": { + * "android": { + * "osVer": "4.4.4", + * "uniVer": "3.7.7", + * "unixVer": "3.9.0" + * }, + * "ios": { + * "osVer": "12.0", + * "uniVer": "3.7.7", + * "unixVer": "4.11" + * }, + * "harmony": { + * "osVer": "3.0", + * "uniVer": "4.25",, + * "unixVer": "x" + * } + * } + * } + * @uniVersion 3.7.7 + * @uniVueVersion 2,3 //支持的vue版本 + * @autotest { expectCallback: true } + */ + offUserCaptureScreen(callback : UserCaptureScreenCallback | null) : void, + /** + * 设置防截屏 + * + * @param {SetUserCaptureScreenOptions} options + * @tutorial https://uniapp.dcloud.net.cn/api/system/capture-screen.html#setusercapturescreen + * @uniPlatform { + * "app": { + * "android": { + * "osVer": "4.4.4", + * "uniVer": "3.7.7", + * "unixVer": "3.9.0" + * }, + * "ios": { + * "osVer": "13.0", + * "uniVer": "3.7.7", + * "unixVer": "4.11" + * }, + * "harmony": { + * "osVer": "3.0", + * "uniVer": "4.25", + * "unixVer": "x" + * } + * } + * } + * @uniVersion 3.7.7 + * @uniVueVersion 2,3 //支持的vue版本 + */ + setUserCaptureScreen(options : SetUserCaptureScreenOptions) : void + }