如何在没有通知的情况下启动服务?

时间:2018-12-06 13:06:45

标签: android service notifications calendar

我有一个IntentService extends IntentService

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
        String NOTIFICATION_CHANNEL_ID = "channel";
        long pattern[] = {0, 50, 50};
        NotificationManager mNotificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "Your Notifications",
                    NotificationManager.IMPORTANCE_HIGH);

            notificationChannel.setDescription("");
            notificationChannel.enableLights(true);
            notificationChannel.setLightColor(Color.RED);
            notificationChannel.setVibrationPattern(pattern);
            notificationChannel.enableVibration(true);
            mNotificationManager.createNotificationChannel(notificationChannel);
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel channel = mNotificationManager.getNotificationChannel(NOTIFICATION_CHANNEL_ID);
            channel.canBypassDnd();
        }

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
        notificationBuilder.setAutoCancel(true)
                .setContentTitle(getString(R.string.app_name))
                .setContentText("test text")
                .setDefaults(Notification.DEFAULT_ALL)
                .setWhen(System.currentTimeMillis())
                .setSmallIcon(R.drawable.logonotification)
                .setAutoCancel(true);

        Intent test = new Intent(this, MainActivity.class);

        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addNextIntent(test);

        PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(
                0,
                PendingIntent.FLAG_UPDATE_CURRENT
        );
        notificationBuilder.setContentIntent(resultPendingIntent);

        mNotificationManager.notify(1000, notificationBuilder.build());
        return super.onStartCommand(intent,flags,startId);
    }

我有在特定时间启动此服务的代码:

Intent notify = new Intent(v.getContext(), IntentService.class);

                    AlarmManager alarmManager = (AlarmManager) v.getContext().getSystemService(ALARM_SERVICE);
                    PendingIntent pendingIntent = PendingIntent.getService(v.getContext(), 0, notify, 0);

                    Calendar calendar = Calendar.getInstance();
                    calendar.set(Calendar.HOUR_OF_DAY, 15);
                    calendar.set(Calendar.MINUTE, 42);
                    calendar.set(Calendar.SECOND, 0);

                    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000 , pendingIntent);

但是我需要一点。我需要该服务来启动立即,并在 TIMING 上通知。

如何启动没有 lanching通知服务?当应用关闭时,我需要此通知启动通知。

0 个答案:

没有答案
相关问题