¿Cómo realizar una acción de notificación (clic) en la pantalla de bloqueo?

TL; DR

¿Cómo puedo hacer una notificación que funciona desde la pantalla de bloqueo sin desbloquear? Después de hacer clic en una acción, un botón en la notificación o simplemente en la notificación completa, quiero hacer una llamada a la API (sin escribir mi código de desbloqueo)

DetallesGol

Basado en la respuesta enesta pregunta Intenté hacer una notificación con una acción que funciona en la pantalla de bloqueo sin desbloquear el dispositivo. La acción es algo que no necesita ninguna interfaz o interacción adicional (piense 'enviar una solicitud de API').

Estado

La notificación y el clic funcionan con un dispositivo desbloqueado. Sin embargo, cuando estoy bloqueado, todavía necesito ingresar el código de desbloqueo primero, por lo que hay algo nuevo o simplemente no entendí cómo debe funcionar.

Si entiendo correctamente, puedo establecer mi visibilidad en 'público' para mostrar el contenido (esto funciona), y en lugar de definir una acción (que no parece ser pública) puedo manejar los clics en el diseño (ahora visible). Intenté esto con el siguiente código, pero obviamente no funciona.

He intentado enviar la intención a mi aplicación y a un servicio, como florian sugiere a continuación.

Código

Este es el código donde comienzo la notificación (esto vive en una Actividad, el código se acortó para su conveniencia)

private void startNotification() {

    NotificationCompat.Builder builder = 
            new NotificationCompat.Builder(this)
            .setVisibility(Notification.VISIBILITY_PUBLIC)
            .setOngoing(true)
            .setSmallIcon(R.drawable.abc_ic_menu_share_mtrl_alpha)
            .setContentTitle("title text")
            .setContentText("content text");

    Intent openIntent = new Intent(MyMainActivity.this, MyMainActivity.class);
    openIntent.setAction("some_string");
    PendingIntent pOpenIntent = PendingIntent.getActivity(this, 0, openIntent, 0);
    builder.setContentIntent(pOpenIntent);

    RemoteViews view = new RemoteViews(getPackageName(), R.layout.notification);
    builder.setContent(view);

    NotificationManager mNotificationManager =
            (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    mNotificationManager.notify(id, builder.build());

}

Como dije, también probé con el servicio como sugirió florian, con esto como una llamada:

    Intent yepIntent = new Intent(this, MyIntentService.class);
    yepIntent.setAction("test");
    yepIntent.putExtra("foo", true);
    yepIntent.putExtra("bar", "more info");
    PendingIntent yepPendingIntent = PendingIntent.getService(this, notificationId, yepIntent, PendingIntent.FLAG_CANCEL_CURRENT);
    //builder.addAction(R.drawable.abc_ic_menu_share_mtrl_alpha, "My Action", yepPendingIntent);
    builder.setContentIntent(yepPendingIntent);

La acción no apareció en la pantalla de bloqueo, así que la cambié asetContentIntent ves arriba. Sin embargo, el resultado es el mismo, no hay acción para mí :(

Respuestas a la pregunta(3)

Su respuesta a la pregunta