📖
通知の設定取得と設定画面への遷移
Androidの通知について調べ直す事があったのでメモを残します。
特定のチャンネルの通知が可能かどうか調べる
fun isEnableNotificationSetting(context: Context): Boolean {
val manager: NotificationManagerCompat = NotificationManagerCompat.from(context)
val channel = manager.getNotificationChannel(notificationId)
val isNotice: Boolean = manager.areNotificationsEnabled()
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channelNotice = channel?.importance != NotificationManager.IMPORTANCE_NONE && isNotice
channelNotice
} else {
isNotice
}
}
NotificationManagerCompat.areNotificationsEnabled()
でアプリ全体の通知設定を確認します。
※Oreo未満の端末だとチャンネルが無いのでこちらのみになります。
チャンネル毎の通知設定は
NotificationManagerCompat.getNotificationChannel(notificationId)
で取得したチャンネルにchannel?.importance != NotificationManager.IMPORTANCE_NONE
で判定できます。
自アプリの通知設定画面に遷移させる
fun makeNotificationSettingIntent(context: Context): Intent {
val intent = Intent()
intent.action = android.provider.Settings.ACTION_APP_NOTIFICATION_SETTINGS
intent.putExtra("app_package", context.packageName)
intent.putExtra("app_uid", context.applicationInfo.uid)
intent.putExtra("android.provider.extra.APP_PACKAGE", context.packageName)
return intent
}
あとはこのIntentをstartActivityするだけです。
サンプルプロジェクト
Discussion