Android13新特性之通知权限提升

这篇具有很好参考价值的文章主要介绍了Android13新特性之通知权限提升。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

android 通知权限,Android新特性,android

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中,确保应用的通知权限对于保障通信的安全性至关重要。同时,在应用中进行精确闹钟权限的判断和处理也显得尤为关键。通过合理的权限管理,可以为用户提供更安全、更稳定的通信环境。文章来源地址https://www.toymoban.com/news/detail-714588.html

到了这里,关于Android13新特性之通知权限提升的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android13适配所有文件管理权限

    很早之前在Android11上面就适配过所有文件管理权限,这次是海外版升级到Android13,由于选择相册用的是第三方库,组内的同事没有上架Google的经验直接就提交代码,虽然功能没有问题,但是上架的时候被打回了,于是记录一下适配工作. 绝大多数需要共享存储空间访问权限的

    2024年01月22日
    浏览(27)
  • 高通Android 12/13 默认应用程序授予权限

    1、一提到权限很多Android开发者都会想到 比如拨打电话 读取手机通讯录 定位 这些都是需要申请权限,Google Android 6.0之后(sdk 23) 需要app动态申请权限 或者权限组 2、我这里打个比方 比如需要在fm应用 默认打开mic权限  3、我们需要知道这个默认应用程序的包名 (例如 xxx.

    2024年02月01日
    浏览(36)
  • Android 13.0 SystemUI下拉状态栏定制二 锁屏页面横竖屏通知栏都居中功能实现

    在13.0的系统rom定制化开发中,在关于systemui的锁屏页面功能定制中,由于在平板横屏通知栏功能中,通知栏总是显示在右边,并且是在右边居中显示的, 由于需要和竖屏显示一样,所以就需要用到在时钟下面显示通知栏,然后同样需要居中显示通知栏,所以就来分析下相关的

    2024年02月20日
    浏览(36)
  • Flutter层对于Android 13存储权限的适配问题

    感觉很久没有写博客了,不对,的确是很久没有写博客了。原因我不怎么想说,玩物丧志了。后面渐渐要恢复之前的写作节奏。今天来聊聊我最近遇到的一个问题: Android 13版本对于storage权限的控制问题。 我们都知道,Android的每个版本更新都会伴随着搞事,也就是所谓的谷

    2024年02月07日
    浏览(28)
  • Android13 --- POST_NOTIFICATIONS权限无法关闭

       Android 13(API 级别 33)及更高版本支持用于从应用发送非豁免(包括前台服务 [FGS])通知的运行时权限:POST_NOTIFICATIONS。此更改有助于用户专注于最重要的通知。 通知运行时权限  |  Android 开发者  |  Android Developers    在Android 13的平台,应用如果想发送通知,则要申请

    2024年02月11日
    浏览(24)
  • android 13.0 去掉usb授权提示框 默认给予权限

    在13.0的系统rom产品开发中,在进行iot关于插入usb设备的开发过程中,在插入usb设备时会弹出usb授权提示框,也带来一些不便, 这个需要默认授予USB权限,插拔usb都不弹出usb弹窗所以这要从usb授权相关管理页默认给与usb权限,接下来分析下 相关的实现功能流程 在Android中,USB权

    2024年01月16日
    浏览(80)
  • 基于Android13的系统启动流程分析(一)之SeLinux权限介绍

    学习Android系统启动流程之前先学习一下SeLinux权限系统,步入正题 本章讲解的方向和你将收获的知识: 什么是SeLinux系统,SeLinux的简介和介绍 SeLinux系统的主要作用和存在的意义,是基于哪个版本开始推行该方案的 如果遇到了SeLinux权限问题该如何解决,有几种解决方案 SeLi

    2024年02月04日
    浏览(73)
  • android开发在android13中存储权限发生变化,READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE无法使用

    原来的两个存储权限在android13中已经无法使用 在android13中读取图片需要以下权限: 视频权限: 音频权限: 如果需要访问pdf,word等其他类型文件,请使用以下权限:

    2024年02月01日
    浏览(27)
  • Android - app内部通知通知栏通知Notification (Kotlin)

    一、简述 先把通知权限打开 为什么写,因为在学kotlin刚好顺手写一下,整块代码在最后 图示效果:(图片来源于网络) 1、首先需要一个NotificationManager对通知进行管理,可以通过调用Context的 getSystemService()方法获取。getSystemService()方法接收一个字符串参数用于确定 获取系统的

    2024年02月08日
    浏览(29)
  • Android 通知

    通知是指 Android 在应用界面之外显示的消息,旨在向用户提供提醒、来自他人的通信或应用中的其他实时信息。用户可以点按通知以打开您的应用,或直接从通知中执行操作。 通知在状态栏中显示为图标,在抽屉式通知栏中显示更详细的条目,并在应用图标上显示一个标志。

    2024年01月20日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包