从IntentService发送通知不起作用?

时间:2019-01-01 11:37:22

标签: java android notifications intentservice

我正在尝试从IntentService发送通知。 我确实获得了所有日志,但没有得到通知(使用我的银河s8而不是模拟器)。

服务代码:

我尝试扩展Service,并且尝试使用调度程序,但没有一个起作用。

public class AppService extends IntentService {

    private NotificationManager mNotificationManager;
    public static final int NOTIFICATION_ID = 1;

    public AppService() {
        super("AppService");
    }

    @Override
    protected void onHandleIntent(@Nullable Intent intent) {
        Log.d("AppService", "Started");
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            // Restore interrupt status.
            Thread.currentThread().interrupt();
        }
        Log.d("AppService", "Sending notification");
        sendNotification("We might have some brand new movies to offer you!");
        Log.d("AppService", "Notification sent");
    }

    private void sendNotification(String msg) {
        mNotificationManager = (NotificationManager)
                this.getSystemService(Context.NOTIFICATION_SERVICE);
        Log.d("AppService", "1");
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                new Intent(this, Analyze.class), 0);
        Log.d("AppService", "2");
        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this)
                        .setContentTitle("MyCienma")
                        .setStyle(new NotificationCompat.BigTextStyle()
                                .bigText(msg))
                        .setSmallIcon(R.drawable.icon_500x500_no_edge)
                        .setContentText(msg);
        Log.d("AppService", "3");
        mBuilder.setContentIntent(contentIntent);
        Log.d("AppService", "4");
        mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
        Log.d("AppService", "5");
    }
}

我确实获得了所有日志,但是没有任何通知。 我项目的最低版本是21,手机正在运行26。这有问题吗?

2 个答案:

答案 0 :(得分:0)

是的,只是因为您必须在android版本8.0(api 26)之后设置通知频道ID。

参考链接:here

希望!这将为您提供帮助。 编码愉快...

答案 1 :(得分:0)

在API v26之后,您必须为每个通知定义一个NotificationChannel

 NotificationManager mNotificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
        NotificationChannel channel = new NotificationChannel("default",
                "YOUR_CHANNEL_NAME",
                NotificationManager.IMPORTANCE_DEFAULT);
        channel.setDescription("YOUR_NOTIFICATION_CHANNEL_DISCRIPTION");
        mNotificationManager.createNotificationChannel(channel);
    }