Не работают уведомления NotificationCompat

230
27 февраля 2017, 11:49

Добрый день, друзья. Я новичок в программировании и в данный момент клепаю простое приложение-напоминалку. Суть проблемы: в заданное время напоминания просто не срабатывают. Ни ошибки, ничего. Отладочное сообщение в теле метода создания уведомления так же не появляется, т.е. как я понимаю процесс в этот блок даже не доходит. Спасибо за ваши ответы.

Код деятельности, которая создает уведомление

public class ReminderService extends WakeReminderIntentService {
    public ReminderService() {
        super("ReminderService");
    }

    @Override
    void doReminderWork(Intent intent) {
        Long rowId = intent.getExtras().getLong(RemindersDbAdapter.KEY_ROWID);
        NotificationManager mgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        Intent notificationIntent = new Intent(this, RemindersEdit.class);
        notificationIntent.putExtra(RemindersDbAdapter.KEY_ROWID, rowId);
        PendingIntent pi = PendingIntent.getActivity(this, 0,
            notificationIntent, PendingIntent.FLAG_ONE_SHOT);
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);

        Notification notification = builder
            .setContentIntent(pi)
            .setSmallIcon(R.drawable.note_icon)
            .setTicker(getString(R.string.notify_new_task_message))
            .setWhen(System.currentTimeMillis())
            .setAutoCancel(true).setContentTitle(getString(R.string.notify_new_task_title))
            .setContentText(getString(R.string.notify_new_task_message))
            .build();
        Log.d ("Note","Note has to be done" );
        int id = (int) ((long) rowId);
        mgr.notify(id, notification);
    }
}

Она наследует этот класс (отвечает за блокировки отключения процессора)

public abstract class WakeReminderIntentService extends IntentService { 
    abstract void doReminderWork(Intent intent);
    public static final String LOCK_NAME_STATIC = "com.dummies.android.taskreminder.Static";
    private static PowerManager.WakeLock lockStatic=null;
    public static void acquireStaticLock(Context context) {
        getLock(context).acquire();
    }
    synchronized private static PowerManager.WakeLock getLock(Context context) {
        if (lockStatic==null) {
            PowerManager mgr = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
            lockStatic = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOCK_NAME_STATIC);
            lockStatic.setReferenceCounted(true);
        }
        return(lockStatic);
    }
    public WakeReminderIntentService(String name) {
        super(name);
    }
    @Override
    final protected void onHandleIntent(Intent intent) {
        try {
            doReminderWork(intent);
        } finally {
            getLock(this).release();
        }
    }
}

И, наверное, еще класс установки напоминания стоит показать

public class ReminderManager{
    private Context mContext;
    private AlarmManager mAlarmManager;
    public ReminderManager(Context context) {
        mContext = context;
        mAlarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    }
    public void setReminder(Long taskId, Calendar when) {
        Log.d("SetReminder", "Started");
        Intent i = new Intent(mContext, OnAlarmReceiver.class);
        i.putExtra(RemindersDbAdapter.KEY_ROWID, (long) taskId);
        PendingIntent pi = PendingIntent.getBroadcast (mContext, 0, i, PendingIntent.FLAG_ONE_SHOT);
        mAlarmManager.set(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), pi);
    }
}

UPDATE Код OnAlarmReciever, в который кидается намерение из ReminderManager.

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class OnAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    long rowid =
            intent.getExtras().getLong(RemindersDbAdapter.KEY_ROWID);

    WakeReminderIntentService.acquireStaticLock(context);
    Intent i = new Intent(context,ReminderService.class);
    i.putExtra(RemindersDbAdapter.KEY_ROWID, rowid);
    context.startService(i);
    Log.d ("OnAlarmReciever", "onRecieveDone");
    }
}
READ ALSO
Сохранение значения checkbox

Сохранение значения checkbox

Имеется checkbox в item menu, не получается сохранять его позицию(чекнут или не чекнут)

253
Как составить план чтобы быть тру программистом? [требует правки]

Как составить план чтобы быть тру программистом? [требует правки]

Мне 21 годДля себя решил стать программистом

261
Как задать клики по координатам в Selenium(Java)

Как задать клики по координатам в Selenium(Java)

Добрый день, подскажите как правильно задать в селениуме клики по координатам?

287
Рандомное проигрывание libgdx

Рандомное проигрывание libgdx

Имеется приложение, клон flappy bird, при смерти, воспроизводится файлТребуется сделать так, чтобы воспроизводился не один файл, а рандомный из списка

324