Android 13.0 適配——運行時通知權限

前言

在Android 13上對通知的行為做了一些變更,例如通知運行時權限,主要用于從應用發(fā)送非豁免通知的運行時權限:POST_NOTIFICATIONS,如果不申請并且允許則無法發(fā)送通知。有助于用戶專注于最重要的通知。


notification.jpg
聲明權限

如果targetSdk>=33,首先需要在應用的清單文件中先聲明權限:

<manifest>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application>
        XXXXX
    </application>
</manifest>
運行時權限申請

然后完成從Android 6.0開始的那套運行時權限申請流程,可以看一下我的另一篇文章:
Android 6.0 適配——管理運行時權限

權限對話框的選擇
選擇允許
  • 發(fā)送通知
  • 發(fā)送與前臺服務相關的通知
選擇不允許
  • 無法發(fā)送通知,除非該應用符合豁免條件,例如與媒體會話有關的通知
  • 一旦用戶選擇不允許,下次系統(tǒng)將不會再出現(xiàn)權限申請的彈窗
  • 手動引導用戶去打開權限:

首先判斷是否有通知權限

val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
notificationManager.areNotificationsEnabled()

如果沒有通知權限,跳到設置界面打開通知權限

    private fun startNotificationSetting() {
        val applicationInfo = applicationInfo
        try {
            val intent = Intent()
            intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
            intent.action = "android.settings.APP_NOTIFICATION_SETTINGS"
            intent.putExtra("app_package", applicationInfo.packageName)
            intent.putExtra("android.provider.extra.APP_PACKAGE", applicationInfo.packageName)
            intent.putExtra("app_uid", applicationInfo.uid)
            startActivity(intent)
        } catch (e: Exception) {
            val intent = Intent()
            intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
            intent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"
            intent.data = Uri.fromParts("package", applicationInfo.packageName, null)
            startActivity(intent)
        }
    }
滑開對話框,不按任何一個按鈕
  • 沒有任何變化,下次進入對應位置時仍可以彈出通知權限對話框
注意點

應用無需請求POST_NOTIFICATIONS權限即可啟動前臺服務,但是應用仍必須在啟動前臺服務時提供一個通知。

結(jié)尾

這個更新呢重點還是在于改善用戶的體驗,用戶能夠自主選擇是否接受應用推送的通知,減少被打擾的情況。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容