Android13新特性之通知权限提升

news2024/12/26 21:13:16

Android13新特性之通知权限提升

随着移动通信的高速发展,保障通信的安全性变得尤为重要。在Android 13的最新版本中,通知权限的管理得到了进一步加强。为了实现安全的通信和确保用户的隐私,必须正确申请通知权限。本文将详细探讨如何在Android 13中添加通知权限,并阐述其中的实际操作和关键细节。

1. 添加通知权限

在Android 13中,要想唤起通知,首先需要申请对应的通知权限。在应用的清单文件(AndroidManifest.xml)中添加如下代码:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
</manifest>

这样,你的应用就被赋予了显示通知的能力。

2. 动态请求权限

不仅仅是在清单文件中添加权限,还需要在显示通知之前进行动态的权限请求。以下是一个示例代码,演示了如何在动态请求权限的过程中确保用户的通知权限:

fun checkPermission() {
    val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
    // 检测该应用是否有通知权限
    when (manager.areNotificationsEnabled()) {
        true -> {
            showNotification()
            Toast.makeText(this@MainActivity, "点击了通知按钮", Toast.LENGTH_SHORT).show()
        }
        false -> {
            requestPermissionLauncher.launch(
                Manifest.permission.POST_NOTIFICATIONS)
        }
    }
}

在上述代码中,我们通过判断应用是否具备通知权限来决定是否展示通知。如果应用没有通知权限,就会触发动态请求权限的过程。

3. 用户禁止授予权限的情景

在某些情况下,用户可能会在第一次请求权限时选择禁止。此后,再次尝试动态请求权限就不会弹出请求弹窗。这时,我们只能引导用户手动开启相应的权限。

4. 权限判断

Android源码中,有一段与权限相关的判断逻辑,它控制了权限的赋予。具体代码如下:

private void grantSignatureAppsNotificationPermissions(PackageManagerWrapper pm, int userId) {
    Log.i(TAG, "Granting Notification permissions to platform signature apps for user " + userId);
    List<PackageInfo> packages = mContext.getPackageManager().getInstalledPackagesAsUser(
            DEFAULT_PACKAGE_INFO_QUERY_FLAGS, UserHandle.USER_SYSTEM);
    for (PackageInfo pkg : packages) {
        if (pkg == null || !pkg.applicationInfo.isSystemApp()
                || !pkg.applicationInfo.isSignedWithPlatformKey()) {
            continue;
        }
        grantRuntimePermissionsForSystemPackage(pm, userId, pkg, NOTIFICATION_PERMISSIONS);
    }
}

5. 常见的通知变更

定时通知

在Android 13中,有关通知的变更主要涉及到定时通知。这方面的变更有两个主要方面:

5.1 需要精确闹钟权限

在Android 13中,想要使用精确的定时通知,需要申请以下两个权限之一:

<!-- Android 12添加的权限 -->
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>

<!-- Android 13添加的权限 -->
<uses-permission android:name="android.permission.USE_EXACT_ALARM"/>

这两者之间的区别在于,使用SCHEDULE_EXACT_ALARM权限时,用户可以手动关闭,而使用USE_EXACT_ALARM权限时则无法手动关闭。

5.2 用户主动关闭精确闹钟权限后的处理

当用户在首次请求弹窗中选择关闭权限后,再次请求权限时将无法再次弹出请求弹窗。此时,唯一的方法是引导用户手动开启相关权限。

6. 权限判断方法

在Android源码中,有一个新的方法canScheduleExactAlarms(),用于判断应用是否具有精确时间权限。这个方法的实现如下:

public boolean canScheduleExactAlarms() {
    val am = getSystemService(ALARM_SERVICE) as AlarmManager
   

 return am.canScheduleExactAlarms()
}

此方法的判断标准不仅仅包括上述两个精确时间的权限,还考虑了应用是否在节能白名单中。

总之,在Android 13中,确保应用的通知权限对于保障通信的安全性至关重要。同时,在应用中进行精确闹钟权限的判断和处理也显得尤为关键。通过合理的权限管理,可以为用户提供更安全、更稳定的通信环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/909733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

时空智友企业流程化管控系统文件上传漏洞复现

0x01 产品简介 时空智友企业流程化管控系统是一个功能丰富、灵活可定制的企业管理工具。通过该系统&#xff0c;企业能够实现流程的自动化、协同的提升、数据的洞察和决策的优化&#xff0c;从而提高工作效率、管理水平和企业竞争力。 0x02 漏洞概述 时空智友企业流程化管控系…

Embedding 向量生成GPT数据使用相关

如果使用python3.6的版本&#xff0c;使用pycharm创建工程&#xff0c;那么默认会使用 docx包&#xff0c;这样运行程序会爆异常&#xff0c;突然想起以前请教的一个大神&#xff0c;想当 初&#xff0c;这个问题困扰了我 两天时间&#xff0c;在此记录一下&#xff1a; pytho…

ReactiveApi

reactivity api: https://v3.vuejs.org/api/reactivity-api 1. 获取响应式数据 API传入返回备注reactiveplain-object对象代理深度代理对象中的所有成员readonlyplain-object or proxy对象代理只能读取代理对象中的成员&#xff0c;不可修改refany{ value: ... }对value的访问…

华为数通方向HCIP-DataCom H12-821题库(单选题:01-20)

第01题 下面关于OSPF邻居关系和邻接关系描述正确的是 A、邻接关系由 OSPF的 DD 报文维护 B、OSPF 路由器在交换 Hello 报文之前必须建立邻接关系 C、邻居关系是从邻接关系中选出的为了交换路由信息而形成的关系 D、并非所有的邻居关系都可以成为邻接关系 答案&#xff1a;D 解析…

STM32F4X 定时器中断

STM32F4X 定时器中断 什么是定时器STM32F4X 定时器分类有关定时器的概念预分频(PSC)自动重装载值(ARR) STM32F4X定时器例程定时器相关函数定时器例程 什么是定时器 定时器(Timer)最基本的功能就是定时&#xff0c;比如定时翻转LED灯&#xff0c;定时向串口发送数据等。除此之外…

vue3 计算两个表单得到第三个表单数据

<el-formref"ruleFormRef"label-width"150px"label-suffix":":rules"rules":disabled"drawerProps.isView":model"drawerProps.rowData"><el-form-item label"云平台名称" prop"cloudId&…

HTTP和HTTPS的区别及通信原理

文章目录 HTTP特性http解决无状态的问题&#x1f36a;cookiesessiontoken 常见状态码报文和字段方法 HTTPS补充知识常见的加密方式数字摘要 &#xff08;数字指纹&#xff09; && 数字签名 加密过程 HTTP 何为http&#xff1f; http是超文本传输协议&#xff0c;Hyper…

MySQL 数据备份和数据恢复

目录 一、数据备份 1、概述 2、MySQLdump命令备份 1&#xff09;备份单个数据库中的所有表 2) 备份数据中某个或多个表 3) 备份所有数据库 4&#xff09;备份多个库 5) 只备份一个表或多个表结构 二、数据恢复 三、数据备份与恢复应用 一、数据备份 1、概述 数据备…

面试之HTTP

1.HTTP与HTTPS的区别 HTTP运行在TCP之上&#xff1b;HTTPS是运行在SSL之上&#xff0c;SSL运行在TCP之上两者使用的端口不同&#xff1a;HTTP使用的是80端口&#xff0c;HTTPS使用的是443端口安全性不同&#xff1a;HTTP没有加密&#xff0c;安全性较差&#xff1b;HTTPS有加密…

2023国赛数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

【CSS Grid网格布局】常用属性,示例代码解读

Grid布局是一种二维布局系统&#xff0c;可以将页面划分为行和列&#xff0c;并将元素放置在这些行和列的交叉点上。以下是Grid布局的一些常用属性&#xff1a; grid-template-columns/grid-template-rows&#xff1a;用于定义网格的列和行的大小和数量。可以指定具体的尺寸值…

【ARM】Day6 cotex-A7核UART总线实验

cotex-A7核UART总线实验 1. 键盘输入一个字符‘a’&#xff0c;串口工具显示‘b’ 2. 键盘输入一个字符串"nihao"&#xff0c;串口工具显示“nihao” uart.h #ifndef __UART4_H__ #define __UART4_H__#include "stm32mp1xx_rcc.h" #include "stm3…

安卓系列机型-禁止安装某软件 防止“沉迷游戏的小孩”操作解析

如何禁止安装某软件。这里以好课帮app为例做个演示步骤说明。这个博文的目的在于可以阻止他人用手机安装你指定的一些软件。 &#x1f494;&#x1f494;&#x1f494;首先手机上安装好课帮这个软件。打开应用详情找到包名。或者使用第三方工具打开获取这个软件的包名。记住是…

Unity 物体固定屏幕尺寸(透视模式)

物体固定屏幕尺寸 &#x1f96a;效果图&#x1f371;食用方法 &#x1f96a;效果图 如图所示物体远离摄像机后会被放大&#xff0c;靠近相机会被缩小&#xff0c;使得在屏幕上的大小保持不变&#xff1b; &#x1f371;食用方法 导入插件后使用gameObject.SetFixedScreenSi…

c#中lambda表达式缩写推演

Del<string> ml new Del<string>(Notify);//泛型委托的实例化&#xff0c;并关联Nofity方法 Del<string> ml new Del<string>(delegate (string str) { return str.Length; });//将Nofity变更为匿名函数 Del<string> ml delegate(string str)…

15.树与二叉树基础

目录 一. 树&#xff0c;基本术语 二. 二叉树 &#xff08;1&#xff09;二叉树 &#xff08;2&#xff09;满二叉树 &#xff08;3&#xff09;完全二叉树 三. 二叉树的性质 四. 二叉树的存储结构 &#xff08;1&#xff09;顺序存储结构 &#xff08;2&#xff09;链…

港联证券|燃气板块午后走高,美能能源涨停,水发燃气大幅拉升

燃气板块21日午后快速拉升&#xff0c;到发稿&#xff0c;美能动力涨停&#xff0c;水发燃气涨超7%&#xff0c;蓝天燃气涨超5%&#xff0c;贵州燃气涨逾4%。 消息面上&#xff0c;受澳大利亚LNG工厂罢工忧虑影响&#xff0c;欧洲基准天然气价格一度大涨18%。 有报导称&#x…

音视频技术开发周刊 | 307

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 “视象新生”火山引擎视频云&AIGC技术大会邀你踏入新“视界” 8月22日&#xff0c;火山引擎视频云&AIGC技术大会即将开启&#xff01;本次大会以“视象新生”为主…

lvs-dr模式+keepalived

一&#xff0c;keepalived概述 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案&#xff0c;可以解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器&#xff08;MASTER&#xff09;和备份服务器&#xff08;BACKUP&#xff09;两种角色的服务器&am…

如何创建和销售在线健身业务

快速轻松地创建您自己的线上健身网站&#xff01; 越来越多的人在家健身&#xff0c;在线健身业务也随之快速增长。 虽然这个生意很红火&#xff0c;但是真的像看起来那么容易上手吗&#xff1f; 有了MemberPress&#xff0c;确实如此&#xff01; 在这篇文章中&#xff0c…