Android 8.0以降からは新しく通知チャンネルが機能が追加されたため、
その対応をする必要がありました。
ただし、Android8.0未満は通知チャンネル機能がないため、
Android8.0未満の処理も必要である。
Android 8についての公式ドキュメント
https://developer.android.com/training/notify-user/channels.html
追加したコード内容
NotificationReceiver.java
    // 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
    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をアプロードする時にエラーになる可能性があるので、推奨はできない。



コメントを残す