Android 8.0以降からは新しく通知チャンネルが機能が追加されたため、
その対応をする必要がありました。
ただし、Android8.0未満は通知チャンネル機能がないため、
Android8.0未満の処理も必要である。
Android 8についての公式ドキュメント
https://developer.android.com/training/notify-user/channels.html
追加したコード内容
NotificationReceiver.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// create notification builder NotificationCompat.Builder builder; // Android 8 (Oreo) への対応 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // Create channel to show notifications. //通知チャンネル名 CharSequence name = title; //チャンネルのメッセージ String description = message; //チャンネルの重要度の設定 int importance = NotificationManager.IMPORTANCE_DEFAULT; //第一引数は通知チャンネルのID 任意で問題ない。 NotificationChannel channel = new NotificationChannel("default", name, importance); //チャンネルの説明を入れる channel.setDescription(description); NotificationManager notificationManager = context.getSystemService(NotificationManager.class); notificationManager.createNotificationChannel(channel); //コンストラクタ 第2引数はNotificationChannelのコンストラクタの第1引数を渡す builder = new NotificationCompat.Builder(context,"default"); }else{ //以下はAndroid 8未満の対応 //コンストラクタの第2引数にチャンネルを渡すとエラーが発生します。 builder = new NotificationCompat.Builder(context); } //通知に必要なNotificationManagerCompatを生成する NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context); //通知を発行する。 //requestCodeはレスポンスコードを指定しています。 notificationManagerCompat.notify(requestCode, builder.build()); |
build.gradle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
android { ========================追加開始======================== compileSdkVersion 28 buildToolsVersion "28.0.0" ========================追加終了======================== defaultConfig { ~以下略~ ========================追加開始======================== targetSdkVersion 28 ========================追加終了======================== ~以下略~ } ~以下略~ } dependencies { ~以下略~ ========================追加開始======================== implementation "com.android.support:support-compat:28.0.0" //gradleにv4 compatライブラリを追加する ========================追加終了======================== ~以下略~ } |
※補足
targetSdkVersionを25にするとAndroid 8.0でもローカル通知が来ますが、Google PlayにAPKをアプロードする時にエラーになる可能性があるので、推奨はできない。
コメントを残す