无法在“空”频道上发布通知目标Api为27

时间:2018-10-19 13:05:02

标签: java android android-studio

将我的应用目标api升级到27个通知后,通知不再起作用,并且在android studio模拟器上收到了祝酒消息:

  

无法在“空”频道上发布通知

这是我的通知代码:

 private void sendNotification(Context context, String sysModel) {
    Intent intentAction = new Intent(context, MainActivity.class);

    intentAction.putExtra("sysModel", sysModel);

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, intentAction, PendingIntent.FLAG_ONE_SHOT);

    notificationBuilder = new NotificationCompat.Builder(context)
            .setSmallIcon(R.drawable.changer_ico)
            .setContentTitle(context.getString(R.string.service_ready))
            .setContentIntent(pendingIntent)
            .addAction(R.drawable.ic_key_black_24dp, context.getString(R.string.turn_on), pendingIntent)
            .setAutoCancel(true);

    Notification notification = notificationBuilder.build();

    notificationManager.notify(1903, notification);

}

2 个答案:

答案 0 :(得分:1)

您可以测试以下代码吗?

请注意,用new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL);代替了new NotificationCompat.Builder(context);

private final static String NOTIFICATION_CHANNEL = "channel_name";
private final static String CHANNEL_DESCRIPTION = "channel_description";
public final static int NOTIFICATION_ID = 1903;

private void sendNotification(Context context, String sysModel) {

    // Intent
    Intent intentAction = new Intent(context, MainActivity.class);
    intentAction.putExtra("sysModel", sysModel);

    // Pending Intent
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, intentAction, PendingIntent.FLAG_ONE_SHOT);

    // Notification Manager
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Service.NOTIFICATION_SERVICE);

    // Create the notification channel if android >= 8
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
        NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL, CHANNEL_DESCRIPTION, NotificationManager.IMPORTANCE_DEFAULT);
        notificationManager.createNotificationChannel(channel);
    }

    // Notification builder.. Note that I added the notification channel on this constructor
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL);
    notificationBuilder.setSmallIcon(R.drawable.changer_ico)
    notificationBuilder.setContentTitle(context.getString(R.string.service_ready))
    notificationBuilder.setContentIntent(pendingIntent)
    notificationBuilder.addAction(R.drawable.ic_key_black_24dp, context.getString(R.string.turn_on), pendingIntent)
    notificationBuilder.setAutoCancel(true);

    // Notify
    notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
}

答案 1 :(得分:0)

在android O中,您应该发送如下通知:

const testArray =  [
    {
      0: {
        prop1: "sdsd", 
        prop2: "ssdsd"
      }
    },
    {
      1: {
        prop3: "sdsd", 
        prop4: "sddd"
      }
    }
 ];
var arr = testArray.map((p)=>{return Object.keys(p[Object.keys(p)[0]]);});
console.log([].concat.apply([],arr));