AlarmManager con phonegap

Estoy usando el complemento StatusBarNotification (Android) para que Phonegap active una notificación. Ahora quiero hacer esto en un momento específico y, por lo que he leído, tengo que usar el AlarmManager de Android. He intentado algunos enfoques, pero parece que no puedo hacer que funcione.

¿Alguna sugerencia sobre cómo puedo hacer esto?

EDIT: puedo obtener la notificación para mostrar si pongo el código en onReceive () para mostrarNotificación (). El problema parece ser que el receptor no recibe la alarma. Probablemente porque no tengo la acción correcta en IntentFilter.

este es mi código. Lo he compilado desde el complemento StatusBarNotification para Phonegap, encontradoaqu

public class StatusBarNotification extends Plugin {
//  Action to execute
public static final String ACTION="notify";

private Context context;
BroadcastReceiver receiver;

public StatusBarNotification() {
    this.receiver = null;
}

public void setContext(PhonegapActivity ctx) {
    super.setContext(ctx);
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(); //Dunno what to put here
    if(receiver == null) {
        this.receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                Log.d("Notification", "inside onReceive");
                /*int icon = R.drawable.notification;
                long when = System.currentTimeMillis();
                NotificationManager manager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);

                Intent notificationIntent = new Intent(context, context.getClass());
                PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
                Notification noti = new Notification(icon, "NOTIFICATION", when);
                noti.setLatestEventInfo(context, "TITLE", "TEXT", contentIntent);
                manager.notify(1, noti);
                */
            }
        };
        ctx.registerReceiver(this.receiver, intentFilter);
    }
}

/**
 *  Executes the request and returns PluginResult
 *
 *  @param action       Action to execute
 *  @param data         JSONArray of arguments to the plugin
 *  @param callbackId   The callback id used when calling back into JavaScript
 *
 *  @return             A PluginRequest object with a status
 * */
@Override
public PluginResult execute(String action, JSONArray data, String callbackId) {
    String ns = Context.NOTIFICATION_SERVICE;

    context = this.ctx.getApplicationContext();

    PluginResult result = null;
    if (ACTION.equals(action)) {
        try {

            String title = data.getString(0);
            String body = data.getString(1);
            Log.d("NotificationPlugin", "Notification: " + title + ", " + body);

            showNotification(title, body);
            result = new PluginResult(Status.OK);
        } catch (JSONException jsonEx) {
            Log.d("NotificationPlugin", "Got JSON Exception "
                    + jsonEx.getMessage());
            result = new PluginResult(Status.JSON_EXCEPTION);
        }
    } else {
        result = new PluginResult(Status.INVALID_ACTION);
        Log.d("NotificationPlugin", "Invalid action : "+action+" passed");
    }
    return result;
}

/**
 *  Displays status bar notification
 *
 *  @param contentTitle Notification title
 *  @param contentText  Notification text
 * */
public void showNotification( CharSequence contentTitle, CharSequence contentText) {
    Intent intent = new Intent(ctx, ctx.getClass());
    PendingIntent pi = PendingIntent.getBroadcast(ctx, 1234, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    Calendar cal = Calendar.getInstance();
    AlarmManager am = (AlarmManager) ctx.getSystemService(ctx.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pi);

}

public void onDestroy() {
    if (this.receiver != null) {
        try {
            this.ctx.unregisterReceiver(this.receiver);
        } catch (Exception e) {
            Log.e("LOG TAG", "Error unregistering network receiver: " + e.getMessage(), e);
        }
    }
}

}

Respuestas a la pregunta(4)

Su respuesta a la pregunta