自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

隱私協(xié)議對(duì)話(huà)框 - Shared Package動(dòng)態(tài)共享包使用

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
通過(guò)開(kāi)發(fā)隱私協(xié)議對(duì)話(huà)框動(dòng)態(tài)共享包,學(xué)習(xí)到了跨包頁(yè)面路由跳轉(zhuǎn),HSP動(dòng)態(tài)共享包開(kāi)發(fā)、引用和調(diào)試,同時(shí)也為以后App上架做好準(zhǔn)備工作,這樣以后開(kāi)發(fā)的項(xiàng)目都可以引用這個(gè)隱私協(xié)議共享包,大大縮小開(kāi)發(fā)時(shí)間和成本。

想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

一、準(zhǔn)備工作

1、共享包har和hsp文件(自行開(kāi)發(fā))

qhj_privacy_library.har
qhj_privacy_library-default-signed.hsp

2、安裝共享包har文件(使用方安裝)

D:\xxxDemo\entry> ohpm install ..\qhj_privacy_library.har

二、動(dòng)態(tài)共享包使用介紹

1、共享包導(dǎo)出一個(gè)首選項(xiàng)數(shù)據(jù)庫(kù)類(lèi)和一個(gè)Dialog組件

export { PreferencesUtil } from "./utils/PreferencesUtil"
export { CustomDialogPrivacy } from './dialog/CustomDialogPrivacy'

2、PreferencessUtil提供了創(chuàng)建首選項(xiàng)數(shù)據(jù)庫(kù),保存數(shù)據(jù),修改數(shù)據(jù)

export class PreferencesUtil {
    createPrivacyPreferences(context)
    saveDefaultPrivacy(isAgree: boolean)
    saveChangePrivacy(isAgree: boolean)
    async getChangePrivacy()
    async deleteChangePrivacy()
}

3、CustomDialogPrivacy對(duì)話(huà)框提供更改標(biāo)題,文本,本地html或遠(yuǎn)程html文件配置

// 隱私協(xié)議標(biāo)題
private title?: string = '協(xié)議和隱私政策提示'
// 前輟隱私協(xié)議信息
private prefixMessage?: string = '感謝您選擇xxx元服務(wù)!我們非常重視您....'
// 后輟隱私協(xié)議信息
private suffixMessage?: string = '的全部?jī)?nèi)容。'
// 隱私協(xié)議信息,點(diǎn)擊可以跳轉(zhuǎn)
private privacyMessage?: string = '《協(xié)議與隱私政策》'
// 本地html文件或http和https返回html文件
private localHtml?: boolean = true
// 隱私協(xié)議URL 支持本地html或http和https返回html
private urlPage?: string = ""

三、使用方如何調(diào)用

1、在EntryAbility.ts的onCreate初始化首選項(xiàng)數(shù)據(jù)

import { CustomDialogPrivacy,PreferencesUtil } from 'qhj_privacy_library'
let preferencesUtil = new PreferencesUtil();

onCreate(want, launchParam) {
    // 創(chuàng)建首選項(xiàng)數(shù)據(jù)庫(kù)
    preferencesUtil.createPrivacyPreferences(this.context);
    // 設(shè)置隱私協(xié)議默認(rèn)不同意
    preferencesUtil.saveDefaultPrivacy(false);
  }

2、在Index.ets頁(yè)面調(diào)用共享包自定義Dialog

import { CustomDialogPrivacy,PreferencesUtil } from 'qhj_privacy_library'
let preferencesUtil = new PreferencesUtil();

  // 開(kāi)始顯示隱私協(xié)議對(duì)話(huà)框
  /**
   * 如果localHtml參數(shù)為true,urlPage參數(shù)為空,顯示默認(rèn)隱私協(xié)議
   * 如果localHtml參數(shù)為true,urlPage參數(shù)不為空,顯示urlPage參數(shù)本地html文件
   * 如果localHtml參數(shù)為false,urlPage參數(shù)為空,顯示默認(rèn)隱私協(xié)議
   * 如果localHtml參數(shù)為false,urlPage參數(shù)不為空,顯示urlPage參數(shù)http或https返回html文件
   */
  privacyDialogController: CustomDialogController = new CustomDialogController({
    builder: CustomDialogPrivacy({
      localHtml: true,
      urlPage: 'privacy.html'
      // urlPage: 'https://id1.cloud.huawei.com/AMW/portal/agreements/userAgreement/zh-cn_userAgreement.html'
    }),
    autoCancel: false,
    alignment: DialogAlignment.Center,
    customStyle: true
  })
  onPageShow() {
    console.info('xx onPageShow 顯示隱私協(xié)議')
    preferencesUtil.getChangePrivacy().then((value) => {
      console.info(`xx onPageShow 獲取隱私協(xié)議狀態(tài):${value}`)
      if (!value) {
        this.privacyDialogController.open()
      }
    })
  }
  onPageHide() {
    console.info(`xx Index -> onPageHide Close Start`)
    this.privacyDialogController.close()
    console.info(`xx Index -> onPageHide Close End`)
  }
  aboutToDisappear() {
    console.info(`xx Index -> aboutToDisappear`)
    delete this.privacyDialogController
    this.privacyDialogController = null
  }
  // 結(jié)束顯示隱私協(xié)議對(duì)話(huà)框

四、補(bǔ)充內(nèi)容

1、跨包頁(yè)面路由跳轉(zhuǎn)

若想在library模塊中的Dialog點(diǎn)擊文本跳轉(zhuǎn)到隱私協(xié)議頁(yè)面(路徑為:library/src/main/ets/pages/PrivacyPage.ets),那么可以在Dialog的代碼(library模塊下的CustomDialogPrivacy.ets,路徑為:qhj_privacy_library/src/main/ets/dialog/CustomDialogPrivacy.ets)里這樣使用:

.onClick(() => {
  this.controller.close()
  router.pushUrl({
    url: '@bundle:com.xxx.study/qhj_privacy_library/ets/pages/PrivacyPage',
    params: {
      localHtml: this.localHtml,
      pageUrl: this.urlPage
    }
  }).then(() => {
    console.info("xx push page success");
  }).catch(err => {
    console.error(`xx pushUrl failed, code is ${err.code}, message is ${err.message}`);
  })
})

其中router.pushUrl方法的入?yún)⒅衭rl的內(nèi)容為:

'@bundle:com.xxx.study/qhj_privacy_library/ets/pages/PrivacyPage'

url內(nèi)容的模板為:

'@bundle:包名(bundleName)/模塊名(moduleName)/路徑/頁(yè)面所在的文件名(不加.ets后綴)'

2、應(yīng)用內(nèi)HSP開(kāi)發(fā)指導(dǎo)

應(yīng)用內(nèi)HSP開(kāi)發(fā)指導(dǎo)-HSP-共享包-應(yīng)用程序包基礎(chǔ)知識(shí)-開(kāi)發(fā)基礎(chǔ)知識(shí)-入門(mén)-HarmonyOS應(yīng)用開(kāi)發(fā)

3、應(yīng)用間HSP的調(diào)試方式

開(kāi)發(fā)者本地調(diào)試應(yīng)用間HSP相關(guān)的功能時(shí),可以通過(guò)相關(guān)指令本地完成應(yīng)用間HSP的分發(fā),主要步驟如下:

  1. 獲取到應(yīng)用間HSP的安裝包。
  2. 通過(guò)指令先安裝應(yīng)用間HSP的安裝包。
hdc install qhj_privacy_library-default-signed.hsp

通過(guò)指令后安裝開(kāi)發(fā)者自身的應(yīng)用hap。

hdc install library_privacy-demo.hap

啟動(dòng)開(kāi)發(fā)者自身的應(yīng)用,調(diào)試相關(guān)功能。
注意:步驟2和步驟3不可以顛倒,否則會(huì)由于缺少必要的應(yīng)用間HSP導(dǎo)致開(kāi)發(fā)者的應(yīng)用安裝失敗。

4、打包HSP和HAP注意事項(xiàng)

打包HSP和HAP用手工簽名,也就是不能用自動(dòng)簽名,如果生成HSP包時(shí)用自動(dòng)簽名,生成HAP包時(shí)也是用自動(dòng)簽名,安裝時(shí),就會(huì)提示簽名不一致。生成簽名證書(shū)請(qǐng)看官方文檔:

為應(yīng)用/服務(wù)進(jìn)行簽名-調(diào)試HarmonyOS應(yīng)用/服務(wù)-應(yīng)用/服務(wù)調(diào)試-DevEco Studio使用指南-工具-HarmonyOS應(yīng)用開(kāi)發(fā)

五、總結(jié)

通過(guò)開(kāi)發(fā)隱私協(xié)議對(duì)話(huà)框動(dòng)態(tài)共享包,學(xué)習(xí)到了跨包頁(yè)面路由跳轉(zhuǎn),HSP動(dòng)態(tài)共享包開(kāi)發(fā)、引用和調(diào)試,同時(shí)也為以后App上架做好準(zhǔn)備工作,這樣以后開(kāi)發(fā)的項(xiàng)目都可以引用這個(gè)隱私協(xié)議共享包,大大縮小開(kāi)發(fā)時(shí)間和成本。

責(zé)任編輯:jianghua 來(lái)源: 51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2011-07-01 11:33:00

Qt 模態(tài) 非模態(tài)

2009-12-29 15:24:48

WPF對(duì)話(huà)框

2010-01-28 16:55:26

Android對(duì)話(huà)框

2011-07-21 15:50:42

jQuery Mobi頁(yè)面對(duì)話(huà)框

2009-12-28 13:47:35

WPF對(duì)話(huà)框

2009-12-28 14:32:31

WPF窗體對(duì)話(huà)框

2009-12-11 15:35:50

PHP彈出對(duì)話(huà)框

2011-05-20 16:49:21

VB.NET

2010-01-11 09:33:32

VB.NET對(duì)話(huà)框調(diào)用

2011-11-23 09:47:36

Winform

2011-07-22 15:32:53

iPhone 按鈕 對(duì)話(huà)框

2012-12-03 10:47:54

WebJQuery控件

2010-01-22 16:27:19

VB.NET關(guān)于對(duì)話(huà)框

2011-06-02 10:37:02

Android 對(duì)話(huà)框

2009-09-03 17:44:22

iPhone程序開(kāi)發(fā)

2021-07-11 07:34:23

Windows 11操作系統(tǒng)微軟

2011-05-31 10:26:37

Android 對(duì)話(huà)框

2022-03-02 15:47:57

Dialog組件UI設(shè)計(jì)鴻蒙

2009-08-07 18:04:22

ASP.NET Dat確認(rèn)對(duì)話(huà)框

2009-11-03 09:21:26

Visual Stud
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)