AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

基于設置應用的應用權限、通知設置跳轉

來源: 責編: 時間:2024-05-09 09:27:08 170觀看
導讀想了解更多關于開源的內容,請訪問:51CTO 鴻蒙開發者社區https://ost.51cto.com引導用戶跳轉到系統設置頁進行權限,通知的相關設置,類似android和iOS應用中常見的應用內跳轉到設置進行通知開啟或權限設置的操作。應用經常

TjH28資訊網——每日最新資訊28at.com

想了解更多關于開源的內容,請訪問:TjH28資訊網——每日最新資訊28at.com

51CTO 鴻蒙開發者社區TjH28資訊網——每日最新資訊28at.com

https://ost.51cto.comTjH28資訊網——每日最新資訊28at.com

引導用戶跳轉到系統設置頁進行權限,通知的相關設置,類似android和iOS應用中常見的應用內跳轉到設置進行通知開啟或權限設置的操作。TjH28資訊網——每日最新資訊28at.com

應用經常會遇到如下的業務訴求:TjH28資訊網——每日最新資訊28at.com

場景一:如果應用首次拒絕了消息通知,應用希望能夠引導用戶拉起設置應用設置允許通知,用來接收應用內的推送消息;并且在設置完后返回頁面可以監聽到修改后的狀態。TjH28資訊網——每日最新資訊28at.com

場景二:當用戶使用一些需要用戶授權的api時(如訪問獲取聯系人信息),若用戶首次拒絕授權,則需要引導用戶到權限設置頁面能夠主動進行應用權限的修改。TjH28資訊網——每日最新資訊28at.com

場景三:支持打開/關閉系統功能如Wi-Fi、NFC、移動網絡、藍牙等。TjH28資訊網——每日最新資訊28at.com

方案描述

場景一:

如果應用首次拒絕了消息通知,應用希望能夠引導用戶拉起設置應用設置允許通知,用來接收應用內的推送消息;并且在設置完后返回頁面可以監聽到修改后的狀態。TjH28資訊網——每日最新資訊28at.com

效果圖

TjH28資訊網——每日最新資訊28at.com

TjH28資訊網——每日最新資訊28at.com

方案

  • 通過startability顯式拉起設置應用-通知管理界面,配置相應的want信息(不推薦使用隱式拉起的方式)。
  • 在進入頁面時通過Notification.requestEnableNotification()監聽應用請求通知使能。

核心代碼

為Button綁定拉起事件。TjH28資訊網——每日最新資訊28at.com

Button(this.buttonText).onClick(()=>{   let context = getContext(this) as common.UIAbilityContext;   let want: Want = {     bundleName: 'com.huawei.hmos.settings',//設置應用bundleName     abilityName: 'com.huawei.hmos.settings.MainAbility',//設置應用abilityName     uri: "systemui_notification_settings",//通知管理頁面     parameters: {       pushParams: {         bundleName:context.abilityInfo.bundleName//拉起方應用包名       }     };     context.startAbility(want)   }).margin(10)   Text(this.message)

在打開頁面時獲取通知管理中按鈕狀態,Notification.requestEnableNotification()請求發送通知的許可,第一次調用會彈窗讓用戶選擇。TjH28資訊網——每日最新資訊28at.com

onPageShow(): void {   Notification.requestEnableNotification().then(() => {   //已打開通知   this.message = "已允許接收消息推送。"   this.buttonText = "去關閉通知"   console.info("requestEnableNotification success"); }).catch((err:Error) => {   //未打開通知   this.message = "已禁止接收消息推送。"   this.buttonText = "去開啟通知"   console.info("requestEnableNotification error"); }); }

場景二:

當用戶使用一些需要用戶授權的api時(如訪問獲取聯系人信息),若用戶首次拒絕授權,則需要引導用戶到權限設置頁面能夠主動進行應用權限的修改。TjH28資訊網——每日最新資訊28at.com

是否為用戶授權可參考允許ACL跨級別申請-應用權限列表-應用權限管控-程序訪問控制-Ability Kit(程序框架服務)-開發 | 華為開發者聯盟 (huawei.com)TjH28資訊網——每日最新資訊28at.com

效果圖

TjH28資訊網——每日最新資訊28at.com

TjH28資訊網——每日最新資訊28at.com

方案

暫無直接跳轉權限管理的方式,可通過跳轉至應用詳情進行用戶申請權限的修改。TjH28資訊網——每日最新資訊28at.com

核心代碼

為button綁定獲取聯系人信息事件:TjH28資訊網——每日最新資訊28at.com

Button("獲取聯系人").onClick(async () => {   const permissions: Array<Permissions> = ['ohos.permission.READ_CONTACTS'];   let context: Context = getContext(this) as common.UIAbilityContext;   let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();   // requestPermissionsFromUser會判斷權限的授權狀態來決定是否喚起彈窗   atManager.requestPermissionsFromUser(context, permissions).then((data: PermissionRequestResult) => {     //grantStatus:授權狀態:0 已授權 1未授權 2未授權 表示請求無效,     let grantStatus: Array<number> = data.authResults;     let length: number = grantStatus.length;     for (let i = 0; i < length; i++) {       if (grantStatus[i] === 0) {         // 已經授權,可以繼續訪問目標操作         this.getContact(context)       } else {         // 用戶拒絕授權,提示用戶必須授權才能訪問當前功能,并引導用戶到系統設置中打開相應的權限         this.contacts = []         this.dialogControllerConfirm.open()         return;       }     }   }).catch((err: BusinessError) => {     console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);   }) }).margin(10)

調用 contact.queryContacts獲取聯系人信息。TjH28資訊網——每日最新資訊28at.com

getContact(context:Context){   contact.queryContacts(context, (err: BusinessError, data) => {     this.contacts = data   }); }

拒接授權后的引導彈窗:TjH28資訊網——每日最新資訊28at.com

dialogControllerConfirm: CustomDialogController = new CustomDialogController({   builder: AlertDialog({     content: '已拒絕訪問系統通訊錄,是否前往開啟?',     primaryButton: {       value: '取消',       action: () => {},     },     secondaryButton: {       value: '確認',       fontColor: $r('sys.color.ohos_id_color_warning'),       action: () => {         this.openAppInfo()       }     },   }),   autoCancel: true,   customStyle: true,   alignment: DialogAlignment.Bottom })

進入設置-應用詳情頁。TjH28資訊網——每日最新資訊28at.com

openAppInfo(){   let context = getContext(this) as common.UIAbilityContext;   context.startAbility({     bundleName: 'com.huawei.hmos.settings',     abilityName: 'com.huawei.hmos.settings.MainAbility',     uri: 'application_info_entry',     parameters: {       pushParams: "com.example.startability"     }   }); }

場景三:

支持打開/關閉系統功能如Wi-Fi、NFC、移動網絡、藍牙等。TjH28資訊網——每日最新資訊28at.com

效果圖

同設置應用內相應界面TjH28資訊網——每日最新資訊28at.com

方案

通過配置對應的uri進行跳轉,藍牙uri:"bluetooth_entry",NFC uri:"nfc_settings",移動網絡uri:"mobile_network_entry"TjH28資訊網——每日最新資訊28at.com

核心代碼

Button("to藍牙").onClick(()=> {   let context = getContext(this) as common.UIAbilityContext;   context.startAbility({     bundleName: 'com.huawei.hmos.settings',     abilityName: 'com.huawei.hmos.settings.MainAbility',     uri:"bluetooth_entry",   }); }).margin(10)  Button("toNFC").onClick(()=> {   let context = getContext(this) as common.UIAbilityContext;   context.startAbility({     bundleName: 'com.huawei.hmos.settings',     abilityName: 'com.huawei.hmos.settings.MainAbility',     uri:"nfc_settings",   }); }).margin(10)  Button("to移動網絡").onClick(()=> {   let context = getContext(this) as common.UIAbilityContext;   context.startAbility({     bundleName: 'com.huawei.hmos.settings',     abilityName: 'com.huawei.hmos.settings.MainAbility',     uri:"mobile_network_entry",   }); }).margin(10)

想了解更多關于開源的內容,請訪問:TjH28資訊網——每日最新資訊28at.com

51CTO 鴻蒙開發者社區TjH28資訊網——每日最新資訊28at.com

https://ost.51cto.comTjH28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-87497-0.html基于設置應用的應用權限、通知設置跳轉

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 原來在 Vue、React 頁面中管理 &lt;head&gt; 標簽這么簡單!

下一篇: Navigation常見場景的解決方案

標簽:
  • 熱門焦點
Top