在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

harmony-utils之AppUtil,APP相關(guān)工具類

童長老 ? 來源:童長老 ? 作者:童長老 ? 2025-06-26 09:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


harmony-utils之AppUtil,APP相關(guān)工具類

harmony-utils 簡介與說明


harmony-utils 一款功能豐富且極易上手的HarmonyOS工具庫,借助眾多實用工具類,致力于助力開發(fā)者迅速構(gòu)建鴻蒙應(yīng)用。其封裝的工具涵蓋了APP、設(shè)備、屏幕、授權(quán)、通知、線程間通信、彈框、吐司、生物認(rèn)證、用戶首選項、拍照、相冊、掃碼、文件、日志、異常捕獲、字符、字符串、數(shù)字、集合、日期、隨機(jī)、base64、加密、解密、JSON等一系列的功能和作,能夠滿足各種不同的開發(fā)需求。
picker_utils 是harmony-utils拆分出來的一個子庫,包含 PickerUtil、PhotoHelper、ScanUtil。

下載安裝
ohpm i @pura/harmony-utils
ohpm i @pura/picker_utils

//全局初始化方法,在UIAbility的onCreate方法中初始化 AppUtil.init()
 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
   AppUtil.init(this.context);
 }

API方法與使用


init 初始化方法,緩存全局變量,在UIAbility的onCreate方法中初始化該方法
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    AppUtil.init(this.context);
  }
isApiSupported 檢查API版本是否安全
let bl = AppUtil.isApiSupported(18);
getApplicationContext 獲取ApplicationContext
let applicationContext = AppUtil.getApplicationContext();
getContext 獲取 UIContext
let uiContext = AppUtil.getUIContext();
getWindowStage 獲取WindowStage
let windowStage = AppUtil.getWindowStage();
  LogUtil.error(JSON.stringify(windowStage, null, 2));
getMainWindow 獲取主窗口
let mainWindow = AppUtil.getMainWindow();
getConfiguration 獲取應(yīng)用的Configuration
let config = AppUtil.getConfiguration();
setGrayScale 設(shè)置灰階,APP一鍵置灰
AppUtil.setGrayScale(1);
setColorMode 設(shè)置應(yīng)用的顏色模式。僅支持主線程調(diào)用。設(shè)置顏色模式,包括:深色模式、淺色模式、不設(shè)置(跟隨系統(tǒng))
AppUtil.setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT);
getColorMode 獲取應(yīng)用的顏色模式
let colorMode = AppUtil.getColorMode();
  ToastUtil.showToast(`應(yīng)用的顏色模式:${colorMode}`);
setFont 設(shè)置應(yīng)用的字體類型。僅支持主線程調(diào)用
font.registerFont({ familyName: 'WCSF', familySrc: $rawfile('wcsf.ttf') });
  AppUtil.setFont('WCSF');
setFontSizeScale 設(shè)置應(yīng)用字體大小縮放比例。僅支持主線程調(diào)用。
AppUtil.setFontSizeScale(1.8);
getFontSizeScale 獲取應(yīng)用字體大小縮放比例
let fontSizeScale = AppUtil.getFontSizeScale();
  ToastUtil.showToast(`應(yīng)用字體大小縮放比例:${fontSizeScale}`);
setLanguage 設(shè)置應(yīng)用的語言
AppUtil.setLanguage('zh-cn');
getLanguage 獲取應(yīng)用的語言
let language = AppUtil.getLanguage();
 ToastUtil.showToast(`應(yīng)用的語言:${language}`);
setSupportedProcessCache 設(shè)置應(yīng)用自身是否支持緩存后快速啟動
AppUtil.setSupportedProcessCache(true);
clearUpApplicationData 清理應(yīng)用本身的數(shù)據(jù),同時撤銷應(yīng)用向用戶申請的權(quán)限
DialogHelper.showAlertDialog({
  content: '是否清理應(yīng)用本身的數(shù)據(jù)?',
  primaryButton:'取消',
  secondaryButton:'清理',
  onAction: (action) = > {
    if (action === DialogAction.SURE) {
      AppUtil.clearUpApplicationData();
    }
  }
});
killAllProcesses 終止應(yīng)用的所有進(jìn)程,進(jìn)程退出時不會正常走完應(yīng)用生命周期
DialogHelper.showAlertDialog({
  content: '是否終止應(yīng)用的所有進(jìn)程?',
  primaryButton:'取消',
  secondaryButton:'終止',
  onAction: (action) = > {
    if (action === DialogAction.SURE) {
      AppUtil.killAllProcesses();
    }
  }
});
restartApp 重啟應(yīng)用并拉起自身指定UIAbility。重啟時不會收到onDestroy回調(diào)
DialogHelper.showAlertDialog({
  autoCancel: false,
  backCancel: false,
  content: '是否重啟應(yīng)用?',
  primaryButton:'取消',
  secondaryButton:'重啟',
  onAction: (action) = > {
    if (action === DialogAction.SURE) {
      AppUtil.restartApp();
    }
  }
});
exit 主動退出整個應(yīng)用;調(diào)用該方法后,任務(wù)中心的任務(wù)默認(rèn)不會清理,如需清理,需要配置removeMissionAfterTerminate為true
DialogHelper.showAlertDialog({
  content: '是否重退出應(yīng)用?',
  primaryButton:'取消',
  secondaryButton:'退出',
  onAction: (action) = > {
    if (action === DialogAction.SURE) {
      AppUtil.exit();
    }
  }
});
getRunningProcessInformation 獲取有關(guān)運行進(jìn)程的信息
let processInformation = await AppUtil.getRunningProcessInformation();
onApplicationStateChange 注冊對當(dāng)前應(yīng)用前后臺變化的監(jiān)聽
private applicationStateChangeCallback: ApplicationStateChangeCallback = {
    onApplicationForeground() {
      LogUtil.warn('applicationStateChangeCallback onApplicationForeground');
    },
    onApplicationBackground() {
      LogUtil.warn('applicationStateChangeCallback onApplicationBackground');
    }
  };
  
  AppUtil.onApplicationStateChange(this.applicationStateChangeCallback);
offApplicationStateChange 取消對應(yīng)用前后臺切換事件的監(jiān)聽
AppUtil.offApplicationStateChange(this.applicationStateChangeCallback);
onEnvironment 注冊對系統(tǒng)環(huán)境變化的監(jiān)聽
private environmentCallback: EnvironmentCallback = {
    onConfigurationUpdated(config) {
      LogUtil.warn(`onConfigurationUpdated config:n${JSON.stringify(config, null)}`);
    },
    onMemoryLevel(level) {
      LogUtil.warn(`onMemoryLevel level: ${level}`);
    }
  };
  
  this.callback1 = AppUtil.onEnvironment(this.environmentCallback);
offEnvironment 取消對系統(tǒng)環(huán)境變化的監(jiān)聽
AppUtil.offEnvironment(this.callback1);
onAbilityLifecycle 注冊監(jiān)聽?wèi)?yīng)用內(nèi)生命周期
private abilityLifecycleCallback: AbilityLifecycleCallback = {
    onAbilityCreate(ability) {
      LogUtil.info(`AbilityLifecycleCallback onAbilityCreate ability: ${ability}`);
    },
    onWindowStageCreate(ability, windowStage) {
      LogUtil.info(`AbilityLifecycleCallback onWindowStageCreate ability: ${ability}`);
      LogUtil.info(`AbilityLifecycleCallback onWindowStageCreate windowStage: ${windowStage}`);
    },
    onWindowStageActive(ability, windowStage) {
      LogUtil.info(`AbilityLifecycleCallback onWindowStageActive ability: ${ability}`);
      LogUtil.info(`AbilityLifecycleCallback onWindowStageActive windowStage: ${windowStage}`);
    },
    onWindowStageInactive(ability, windowStage) {
      LogUtil.info(`AbilityLifecycleCallback onWindowStageInactive ability: ${ability}`);
      LogUtil.info(`AbilityLifecycleCallback onWindowStageInactive windowStage: ${windowStage}`);
    },
    onWindowStageDestroy(ability, windowStage) {
      LogUtil.info(`AbilityLifecycleCallback onWindowStageDestroy ability: ${ability}`);
      LogUtil.info(`AbilityLifecycleCallback onWindowStageDestroy windowStage: ${windowStage}`);
    },
    onAbilityDestroy(ability) {
      LogUtil.info(`AbilityLifecycleCallback onAbilityDestroy ability: ${ability}`);
    },
    onAbilityForeground(ability) {
      LogUtil.info(`AbilityLifecycleCallback onAbilityForeground ability: ${ability}`);
    },
    onAbilityBackground(ability) {
      LogUtil.info(`AbilityLifecycleCallback onAbilityBackground ability: ${ability}`);
    },
    onAbilityContinue(ability) {
      LogUtil.info(`AbilityLifecycleCallback onAbilityContinue ability: ${ability}`);
    }
  };
  
  this.callback2 = AppUtil.onAbilityLifecycle(this.abilityLifecycleCallback);
offAbilityLifecycle 取消監(jiān)聽?wèi)?yīng)用內(nèi)生命周期
AppUtil.offAbilityLifecycle(this.callback2);
getKeyboardAvoidMode 獲取虛擬鍵盤抬起時的頁面避讓模式(OFFSET-上抬模式、RESIZE-壓縮模式)
let mode = AppUtil.getKeyboardAvoidMode();
setKeyboardAvoidMode 設(shè)置虛擬鍵盤彈出時,頁面的避讓模式
AppUtil.setKeyboardAvoidMode(KeyboardAvoidMode.OFFSET)
isPortrait 當(dāng)前設(shè)備是否以豎屏方式顯示
let isPortrait = AppUtil.isPortrait();
 ToastUtil.showToast(`當(dāng)前是否豎屏: ${isPortrait}`);
isLandscape 當(dāng)前設(shè)備是否以橫屏方式顯示
let isLandscape = AppUtil.isLandscape();
  ToastUtil.showToast(`當(dāng)前是否橫屏: ${isLandscape}`);
getStatusBarHeight 獲取狀態(tài)欄的高度,單位為px
let statusBarHeight = AppUtil.getStatusBarHeight();
 ToastUtil.showToast(`狀態(tài)欄的高度為:${statusBarHeight}px`)
getNavigationIndicatorHeight 獲取底部導(dǎo)航條的高度,單位為px
let indicatorHeight = AppUtil.getNavigationIndicatorHeight();
 ToastUtil.showToast(`底部導(dǎo)航條的高度為:${indicatorHeight}px`)
setStatusBar 設(shè)置沉浸式狀態(tài)欄
AppUtil.setStatusBar();
getBundleInfo 獲取當(dāng)前應(yīng)用的BundleInfo
let bundleInfo = AppUtil.getAppInfoSync();
 let infoStr = JSON.stringify(bundleInfo, null, 2);
getAppInfo 獲取應(yīng)用程序的配置信息
let appInfo = AppUtil.getAppInfoSync();
 let infoStr = JSON.stringify(appInfo, null, 2);
getSignatureInfo 獲取應(yīng)用包的簽名信息
let signatureInfo = await AppUtil.getSignatureInfo();
 let infoStr = JSON.stringify(signatureInfo, null, 2);
getBundleName 獲取應(yīng)用包的名稱
let bundleName = AppUtil.getBundleName();
getVersionCode 獲取應(yīng)用版本號
let versionCode = AppUtil.getVersionCode();
getVersionName 獲取應(yīng)用版本名
let versionName = AppUtil.getVersionName();
getTargetVersion 獲取應(yīng)用運行目標(biāo)版本
let targetVersion = AppUtil.getTargetVersion();
getInstallTime 應(yīng)用包安裝時間
let installTime = AppUtil.getInstallTime();
getUpdateTime 應(yīng)用包更新時間
let updateTime = AppUtil.getUpdateTime();
getAppProvisionType 獲取應(yīng)用程序簽名證書文件的類型,分為debug和release兩種類型
let appProvisionType = AppUtil.getAppProvisionType();
debug 標(biāo)識應(yīng)用是否處于調(diào)試模式,取值為true表示應(yīng)用處于調(diào)試模式,取值為false表示應(yīng)用處于非調(diào)試模式
let debug = AppUtil.debug();

創(chuàng)作不易,請給童長老點贊

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • APP
    APP
    +關(guān)注

    關(guān)注

    33

    文章

    1586

    瀏覽量

    73998
  • 方舟
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    8595
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2145

    瀏覽量

    32491
  • 方舟編譯器
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

    402
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    HarmonyOS開發(fā)案例:【生活健康app編寫通用工具】(5)

    本節(jié)將介紹日志打印、時間換算等通用工具的編寫和使用,工具可以簡化應(yīng)用代碼編寫和業(yè)務(wù)流程處理。
    的頭像 發(fā)表于 05-11 09:58 ?791次閱讀
    HarmonyOS開發(fā)案例:【生活健康<b class='flag-5'>app</b><b class='flag-5'>之</b>編寫通用<b class='flag-5'>工具</b><b class='flag-5'>類</b>】(5)

    喜迎harmony OS 2.0 beta發(fā)布【全球首發(fā)】0基礎(chǔ)開發(fā)抖音App

    ,與harmony OS的架構(gòu)師、工程師、運營團(tuán)隊等大佬面對面溝通,對harmony OS的硬件IOT能力、App多終端協(xié)同能力有了非常深刻的印象。對國產(chǎn)OS的各種偏見,自己是第一次有了極大的改觀。毫無疑問
    發(fā)表于 12-17 21:15

    如何使用imu_utils工具生成IMU的Allan方差標(biāo)定曲線?

    如何使用imu_utils工具生成IMU的Allan方差標(biāo)定曲線?
    發(fā)表于 11-22 07:23

    是否存在這個來區(qū)分是Harmony系統(tǒng)或者是Android系統(tǒng)呢

    應(yīng)用所具備能力的抽象,也是應(yīng)用程序的重要組成部分,一開始是打算通過判斷是否存在這個來區(qū)分是Harmony系統(tǒng)或者是Android系統(tǒng), 測試發(fā)現(xiàn)鴻蒙系統(tǒng)確實是存在這個,但是尷尬的是非鴻蒙系統(tǒng)的榮耀
    發(fā)表于 05-24 14:32

    軟件商推谷歌Docs與Outlook同步工具Harmony

    軟件商推谷歌Docs與Outlook同步工具Harmony 北京時間3月10日消息,據(jù)國外媒體報道,美國軟件開發(fā)商Mainsoft周二推出一款名為Harmony的側(cè)邊欄工具,幫助微軟
    發(fā)表于 03-10 09:22 ?839次閱讀

    Microchip Minutes - MPLAB? Harmony專輯 - 第5集 - MPLAB Harmony中的項目恢復(fù)和備份選項

    歡迎觀看Microchip MinutesMPLAB? Harmony專輯。本視頻將介紹如何利用MPLAB Harmony的應(yīng)用程序演示縮短您的開發(fā)時間。
    的頭像 發(fā)表于 06-06 02:45 ?2351次閱讀

    Microchip Minutes - MPLAB? Harmony專輯 - 第5集 - MPLAB Harmony中的項目恢復(fù)和備份選項

    歡迎觀看Microchip MinutesMPLAB? Harmony專輯。本視頻將介紹如何利用MPLAB Harmony的應(yīng)用程序演示縮短您的開發(fā)時間。
    的頭像 發(fā)表于 06-06 13:46 ?2392次閱讀

    MPLAB? Harmony圖形設(shè)計器

    本視頻將介紹MPLAB? Harmony圖形設(shè)計器(MHGC),這款GUI設(shè)計工具現(xiàn)在已作為MPLAB Harmony配置器的一部分集成到了我們獲獎的MPLAB Harmony軟件框架
    的頭像 發(fā)表于 06-07 13:46 ?3377次閱讀
    MPLAB? <b class='flag-5'>Harmony</b>圖形設(shè)計器

    MPLAB? Harmony配置器

    本視頻介紹了Microchip獲獎的軟件開發(fā)框架——MPLAB? Harmony及其集成的功能強大的工具——MPLAB Harmony配置器(MHC)。
    的頭像 發(fā)表于 06-07 03:46 ?3150次閱讀
    MPLAB? <b class='flag-5'>Harmony</b>配置器

    backup-utils Github企業(yè)備份工具

    backup-utils.zip
    發(fā)表于 04-28 15:34 ?0次下載
    backup-<b class='flag-5'>utils</b> Github企業(yè)備份<b class='flag-5'>工具</b>

    如何使用第三方庫中的@pura/harmony-utils(V1.3.3)申請授權(quán)工具

    1. 安裝依賴 ohpm install @pura/harmony-utils 在oh-package.json5中看到以下代碼即表示安裝成功 2. 配置權(quán)限 在 module.json5 文件中
    的頭像 發(fā)表于 06-24 17:31 ?135次閱讀
    如何使用第三方庫中的@pura/<b class='flag-5'>harmony-utils</b>(V1.3.3)申請授權(quán)<b class='flag-5'>工具</b><b class='flag-5'>類</b>一

    如何使用第三方庫中的@pura/harmony-utils(V1.3.3)申請授權(quán)工具

    5.申請授權(quán)(可組合申請)接上文 let p: Permissions[] = [ 'ohos.permission.ACTIVITY_MOTION' , 'ohos.permission.CAMERA' , 'ohos.permission.LOCATION' , 'ohos.permission.APPROXIMATELY_LOCATION' ];PermissionUtil.requestPermissions(p).then((grant) = > { if (grant) { ToastUtil.showToast( `申請授權(quán),已通過...` ); }}) 如果第一次申請用戶沒有同意,可二次申請 PermissionUtil .requestPermissionOnSettingEasy (p) .then ((result) = > { ToastUtil .showToast ( `申請授權(quán),結(jié)果:${result}` );}); 6.申請授權(quán),拒絕后可二次申請 let p: Permissions[] = [ 'ohos
    的頭像 發(fā)表于 06-24 17:32 ?136次閱讀

    harmony-utilsArrayUtil,集合工具

    # harmony-utilsArrayUtil,集合工具 ## harmony-utils 簡介與說明 ------[
    的頭像 發(fā)表于 06-26 17:38 ?60次閱讀

    harmony-utilsAssetUtil,關(guān)鍵資產(chǎn)存儲服務(wù)工具

    harmony-utilsAssetUtil,關(guān)鍵資產(chǎn)存儲服務(wù)工具
    的頭像 發(fā)表于 06-26 17:42 ?60次閱讀

    harmony-utilsAuthUtil,生物認(rèn)證相關(guān)工具

    # harmony-utilsAuthUtil,生物認(rèn)證相關(guān)工具 ## harmony-utils
    的頭像 發(fā)表于 06-26 17:43 ?59次閱讀
    主站蜘蛛池模板: 黄色免费小视频 | 国产美女影院 | 午夜美女久久久久爽久久 | 四虎国产精品免费视 | 免费一级特黄欧美大片勹久久网 | 免费看大美女大黄大色 | 丁香五月缴情综合网 | 国产精品午夜国产小视频 | 亚洲香蕉影视在线播放 | 天天射天天射天天射 | 亚洲一级免费毛片 | 日本一本一道久久香蕉免费 | 夜夜操网站 | 欧美在线性 | 国产三级自拍视频 | 78摸在线 | 四虎影院中文字幕 | 国产在线一区二区三区四区 | 国产精品福利一区二区亚瑟 | 伊人9999| 丁香花五月婷婷开心 | 美女视频黄免费 | 色视频免费观看 | 樱桃磁力bt天堂 | 国产叼嘿免费视频网站 | 夜色福利 | 亚洲国产成人精彩精品 | 香蕉视频黄色在线观看 | 激情综合在线观看 | 99啪啪| 视频一区二区在线播放 | 欧美日本一区二区三区生 | 国产精品资源在线 | 1024手机在线观看你懂的 | 国产五月 | 理论片人人51 | 色女人在线 | 爆操欧美| 免费一级毛片私人影院a行 免费一级毛片无毒不卡 | 国产综合精品久久久久成人影 | 黄色网址视频在线播放 |