我正在尝试通过操作按钮发出通知。单击此操作按钮后,通知消失,它调用将更新数据库的方法。我不想打开一个活动,只是在不打开应用程序的情况下调用方法。
我的问题是通知已正确启动,但操作按钮不起作用。另外,即使构建器具有.setAutoCancel(true)方法,单击通知时也不会消失。
但是当单击按钮或通知时,没有任何反应。这是激活通知的代码:
public void triggerNotification(Context context, String t) {
c = Controlador.getMyController();
idAlarma = c.getIdAlarma();
Uri defaultSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
long[] pattern = new long[]{2000, 1000, 2000};
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
Intent action1Intent = new Intent(context, NotificationActionService.class)
.setAction(ACTION_1);
PendingIntent action1PendingIntent = PendingIntent.getService(context, 0,
action1Intent, PendingIntent.FLAG_ONE_SHOT);
builder
.setContentTitle("Tienes una toma pendiente")
.setContentText(t)
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher_background))
.setSmallIcon(R.mipmap.ic_launcher_round)
.setAutoCancel(true) //Cuando se pulsa la notificación ésta desaparece
.setSound(defaultSound)
.setVibrate(pattern)
.addAction(new NotificationCompat.Action(R.mipmap.ic_launcher_round, "Me he tomado la pastilla", action1PendingIntent));
Notification notificacion = new NotificationCompat.BigTextStyle(builder)
.bigText(t)
.setBigContentTitle("Tienes Una Toma Pendiente")
.build();
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(idAlarma, notificacion);
}
NotificationActionService类是一个内部类,如下所示:
public static class NotificationActionService extends IntentService {
public NotificationActionService() { super("NotificationActionService"); }
@Override
protected void onHandleIntent(Intent intent) {
Log.d("IntentService","Hello World");
Toast.makeText(getApplicationContext(), "Service running", Toast.LENGTH_SHORT).show();
}
}
此代码既不显示Toast消息也不显示logcat消息。
PD:在说这是重复的之前,我想补充一点,我已经尝试了许多解决方案,并且我的代码看起来与THIS线程非常相似。尽管如此,该解决方案仍无法在我的应用程序上运行,所以我试图了解为什么它无法正常工作。
我还想了解为什么setAutoCancel(true)方法不起作用。