当前位置:首页 > 科技  > 软件

基于设置应用的应用权限、通知设置跳转

来源: 责编: 时间:2024-05-09 09:27:08 107观看
导读想了解更多关于开源的内容,请访问:51CTO 鸿蒙开发者社区https://ost.51cto.com引导用户跳转到系统设置页进行权限,通知的相关设置,类似android和iOS应用中常见的应用内跳转到设置进行通知开启或权限设置的操作。应用经常

lah28资讯网——每日最新资讯28at.com

想了解更多关于开源的内容,请访问:lah28资讯网——每日最新资讯28at.com

51CTO 鸿蒙开发者社区lah28资讯网——每日最新资讯28at.com

https://ost.51cto.comlah28资讯网——每日最新资讯28at.com

引导用户跳转到系统设置页进行权限,通知的相关设置,类似android和iOS应用中常见的应用内跳转到设置进行通知开启或权限设置的操作。lah28资讯网——每日最新资讯28at.com

应用经常会遇到如下的业务诉求:lah28资讯网——每日最新资讯28at.com

场景一:如果应用首次拒绝了消息通知,应用希望能够引导用户拉起设置应用设置允许通知,用来接收应用内的推送消息;并且在设置完后返回页面可以监听到修改后的状态。lah28资讯网——每日最新资讯28at.com

场景二:当用户使用一些需要用户授权的api时(如访问获取联系人信息),若用户首次拒绝授权,则需要引导用户到权限设置页面能够主动进行应用权限的修改。lah28资讯网——每日最新资讯28at.com

场景三:支持打开/关闭系统功能如Wi-Fi、NFC、移动网络、蓝牙等。lah28资讯网——每日最新资讯28at.com

方案描述

场景一:

如果应用首次拒绝了消息通知,应用希望能够引导用户拉起设置应用设置允许通知,用来接收应用内的推送消息;并且在设置完后返回页面可以监听到修改后的状态。lah28资讯网——每日最新资讯28at.com

效果图

lah28资讯网——每日最新资讯28at.com

lah28资讯网——每日最新资讯28at.com

方案

  • 通过startability显式拉起设置应用-通知管理界面,配置相应的want信息(不推荐使用隐式拉起的方式)。
  • 在进入页面时通过Notification.requestEnableNotification()监听应用请求通知使能。

核心代码

为Button绑定拉起事件。lah28资讯网——每日最新资讯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()请求发送通知的许可,第一次调用会弹窗让用户选择。lah28资讯网——每日最新资讯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时(如访问获取联系人信息),若用户首次拒绝授权,则需要引导用户到权限设置页面能够主动进行应用权限的修改。lah28资讯网——每日最新资讯28at.com

是否为用户授权可参考允许ACL跨级别申请-应用权限列表-应用权限管控-程序访问控制-Ability Kit(程序框架服务)-开发 | 华为开发者联盟 (huawei.com)lah28资讯网——每日最新资讯28at.com

效果图

lah28资讯网——每日最新资讯28at.com

lah28资讯网——每日最新资讯28at.com

方案

暂无直接跳转权限管理的方式,可通过跳转至应用详情进行用户申请权限的修改。lah28资讯网——每日最新资讯28at.com

核心代码

为button绑定获取联系人信息事件:lah28资讯网——每日最新资讯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获取联系人信息。lah28资讯网——每日最新资讯28at.com

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

拒接授权后的引导弹窗:lah28资讯网——每日最新资讯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 })

进入设置-应用详情页。lah28资讯网——每日最新资讯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、移动网络、蓝牙等。lah28资讯网——每日最新资讯28at.com

效果图

同设置应用内相应界面lah28资讯网——每日最新资讯28at.com

方案

通过配置对应的uri进行跳转,蓝牙uri:"bluetooth_entry",NFC uri:"nfc_settings",移动网络uri:"mobile_network_entry"lah28资讯网——每日最新资讯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)

想了解更多关于开源的内容,请访问:lah28资讯网——每日最新资讯28at.com

51CTO 鸿蒙开发者社区lah28资讯网——每日最新资讯28at.com

https://ost.51cto.comlah28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-87497-0.html基于设置应用的应用权限、通知设置跳转

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 原来在 Vue、React 页面中管理 &lt;head&gt; 标签这么简单!

下一篇: Navigation常见场景的解决方案

标签:
  • 热门焦点
  • 中兴AX5400Pro+上手体验:再升级 双2.5G网口+USB 3.0这次全都有

    中兴AX5400Pro+上手体验:再升级 双2.5G网口+USB 3.0这次全都有

    2021年11月的时候,中兴先后发布了两款路由器产品,中兴AX5400和中兴AX5400 Pro,从产品命名上就不难看出这是隶属于同一系列的,但在外观设计上这两款产品可以说是完全没一点关系
  • 7月安卓手机性价比榜:努比亚+红魔两款新机入榜

    7月安卓手机性价比榜:努比亚+红魔两款新机入榜

    7月登场的新机有努比亚Z50S Pro和红魔8S Pro,除了三星之外目前唯二的两款搭载超频版骁龙8Gen2处理器的产品,而且努比亚和红魔也一贯有着不错的性价比,所以在本次的性价比榜单
  • 掘力计划第 20 期:Flutter 混合开发的混乱之治

    掘力计划第 20 期:Flutter 混合开发的混乱之治

    在掘力计划系列活动第20场,《Flutter 开发实战详解》作者,掘金优秀作者,Github GSY 系列目负责人恋猫的小郭分享了Flutter 混合开发的混乱之治。Flutter 基于自研的 Skia 引擎
  • 2023 年的 Node.js 生态系统

    2023 年的 Node.js 生态系统

    随着技术的不断演进和创新,Node.js 在 2023 年达到了一个新的高度。Node.js 拥有一个庞大的生态系统,可以帮助开发人员更快地实现复杂的应用。本文就来看看 Node.js 最新的生
  • Flowable工作流引擎的科普与实践

    Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 学习JavaScript的10个理由...

    学习JavaScript的10个理由...

    作者 | Simplilearn编译 | 王瑞平当你决心学习一门语言的时候,很难选择到底应该学习哪一门,常用的语言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 在线图片编辑器,支持PSD解析、AI抠图等

    在线图片编辑器,支持PSD解析、AI抠图等

    自从我上次分享一个人开发仿造稿定设计的图片编辑器到现在,不知不觉已过去一年时间了,期间我经历了裁员失业、面试找工作碰壁,寒冬下一直没有很好地履行计划.....这些就放在日
  • 回归OPPO两年,一加赢了销量,输了品牌

    回归OPPO两年,一加赢了销量,输了品牌

    成为OPPO旗下主打性能的先锋品牌后,一加屡创佳绩。今年618期间,一加手机全渠道销量同比增长362%,凭借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    据此前官方宣布,OPPO将于7月25日也就是今天下午14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖
Top
Baidu
map