如何在Android 12L及更低版本中申请Post Notification权限?
Android 12L及更早版本中引导用户开启通知权限的解决方案
在Android 12L及更早版本中,POST_NOTIFICATIONS不属于危险权限范畴,系统不支持通过requestPermissions()唤起动态权限申请弹窗——这就是你之前的代码能检测权限状态,但弹框不出现的原因。
针对这类版本,正确的做法是直接引导用户跳转到应用的通知设置页面,让用户手动开启权限,具体实现如下:
完整代码示例(Kotlin)
val permissionState = ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) if (permissionState == PackageManager.PERMISSION_DENIED) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { // Android 13+ 执行标准动态权限申请流程 ActivityCompat.requestPermissions( this, arrayOf(Manifest.permission.POST_NOTIFICATIONS), 1 ) } else { // Android 12L及以下,跳转至应用通知设置页 val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply { putExtra(Settings.EXTRA_APP_PACKAGE, packageName) // 可选:指定跳转至某个具体通知渠道的设置页 // putExtra(Settings.EXTRA_CHANNEL_ID, "your_notification_channel_id") } startActivity(intent) } }
关键说明
- 跳转设置页后,用户可以直接在系统设置中开启通知权限,返回应用后可再次调用
checkSelfPermission()确认权限状态。 - Android 13+版本必须在
AndroidManifest.xml中声明POST_NOTIFICATIONS权限才能正常申请,低版本声明该权限不会产生负面影响。
内容的提问来源于stack exchange,提问作者Elye
相关产品推荐
相关产品推荐

