- message = m.receiveMessage();
- if (message == null) {
- System.exit(0);
- } else {
- System.out.println("Received message: " + message.getBody().get());
- }
- } catch (IOException | InvalidVersionException e) {
- System.out.println("Receive message: " + e.getMessage());
+ m.receiveMessages(new Manager.ReceiveMessageHandler() {
+ @Override
+ public void handleMessage(TextSecureEnvelope envelope) {
+ System.out.println("Envelope from: " + envelope.getSource());
+ System.out.println("Timestamp: " + envelope.getTimestamp());
+
+ if (envelope.isReceipt()) {
+ System.out.println("Got receipt.");
+ } else if (envelope.isWhisperMessage() | envelope.isPreKeyWhisperMessage()) {
+ TextSecureContent content = m.decryptMessage(envelope);
+
+ if (content == null) {
+ System.out.println("Failed to decrypt message.");
+ } else {
+ if (content.getDataMessage().isPresent()) {
+ TextSecureDataMessage message = content.getDataMessage().get();
+
+ System.out.println("Body: " + message.getBody().get());
+ if (message.getAttachments().isPresent()) {
+ System.out.println("Attachments: ");
+ for (TextSecureAttachment attachment : message.getAttachments().get()) {
+ System.out.println("- " + attachment.getContentType() + " (" + (attachment.isPointer() ? "Pointer" : "") + (attachment.isStream() ? "Stream" : "") + ")");
+ if (attachment.isPointer()) {
+ System.out.println(" Id: " + attachment.asPointer().getId() + " Key length: " + attachment.asPointer().getKey().length + (attachment.asPointer().getRelay().isPresent() ? " Relay: " + attachment.asPointer().getRelay().get() : ""));
+ }
+ }
+ }
+ }
+ if (content.getSyncMessage().isPresent()) {
+ TextSecureSyncMessage syncMessage = content.getSyncMessage().get();
+ System.out.println("Received sync message");
+ }
+ }
+ } else {
+ System.out.println("Unknown message received.");
+ }
+ System.out.println();
+ }
+ });
+ } catch (IOException e) {
+ System.out.println("Error while receiving message: " + e.getMessage());