Add notification functionality to Android Wear devices.

This should allow for Android Wear device- and Pebble-users to
easily mark an incoming message as read via the smartwatch.

http://developer.getpebble.com/blog/2014/12/19/Leverage-Android-Actionable-Notifications/

Closes #3010
This commit is contained in:
Christoph Haefner 2015-04-15 18:46:57 +02:00 committed by Moxie Marlinspike
parent 790c6980fe
commit 424a463b21

View File

@ -31,6 +31,7 @@ import android.media.AudioManager;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.net.Uri; import android.net.Uri;
import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationCompat.Action;
import android.support.v4.app.NotificationCompat.BigTextStyle; import android.support.v4.app.NotificationCompat.BigTextStyle;
import android.support.v4.app.NotificationCompat.InboxStyle; import android.support.v4.app.NotificationCompat.InboxStyle;
import android.text.Spannable; import android.text.Spannable;
@ -199,8 +200,11 @@ public class MessageNotifier {
if (timestamp != 0) builder.setWhen(timestamp); if (timestamp != 0) builder.setWhen(timestamp);
if (masterSecret != null) { if (masterSecret != null) {
builder.addAction(R.drawable.check, context.getString(R.string.MessageNotifier_mark_as_read), Action markAsReadAction = new Action(R.drawable.check,
context.getString(R.string.MessageNotifier_mark_as_read),
notificationState.getMarkAsReadIntent(context, masterSecret)); notificationState.getMarkAsReadIntent(context, masterSecret));
builder.addAction(markAsReadAction);
builder.extend(new NotificationCompat.WearableExtender().addAction(markAsReadAction));
} }
SpannableStringBuilder content = new SpannableStringBuilder(); SpannableStringBuilder content = new SpannableStringBuilder();
@ -252,8 +256,11 @@ public class MessageNotifier {
builder.setDeleteIntent(PendingIntent.getBroadcast(context, 0, new Intent(DeleteReceiver.DELETE_REMINDER_ACTION), 0)); builder.setDeleteIntent(PendingIntent.getBroadcast(context, 0, new Intent(DeleteReceiver.DELETE_REMINDER_ACTION), 0));
if (masterSecret != null) { if (masterSecret != null) {
builder.addAction(R.drawable.check, context.getString(R.string.MessageNotifier_mark_all_as_read), Action markAllAsReadAction = new Action(R.drawable.check,
context.getString(R.string.MessageNotifier_mark_all_as_read),
notificationState.getMarkAsReadIntent(context, masterSecret)); notificationState.getMarkAsReadIntent(context, masterSecret));
builder.addAction(markAllAsReadAction);
builder.extend(new NotificationCompat.WearableExtender().addAction(markAllAsReadAction));
} }
InboxStyle style = new InboxStyle(); InboxStyle style = new InboxStyle();