Search code examples
androidandroid-intentandroid-notificationswear-osgoogleio

How to add button directly on Notification on Android Wear


At the Google I/O Bytes video How We Customized Google Apps for Android Wear (https://www.youtube.com/watch?v=o5cne6vK-eo), I saw that for the Wearable-customized Camera App, they add a button directly on the notification (not at the back of the notification as a new page which would happen if addAction or setContentAction is used).

Does any one know which API I need to use in order to do that? I don't think there are using a custom Activity for the first view cos it just looks like the first screen of Android Wear when there is at least one Notification. I've tried to find for it in the documentations but couldn't get it. I've tried setDisplayIntent which is suggested by others but it doesn't seems to be the same one.


Solution

  • Use WearableExtender.setContentAction(int) to add an action directly to a notification card. The int parameter refers to the index of the action you have added to the notification (using NotificationCompat.Builder.addAction(NotificationCompat.Action)). See Creating a Notification for more info on how to create notification for wearables.

    The sample code you can download using the SDK manager contains a sample project Notifications (located under /samples/android-20/wearable/Notifications) that shows how to create various types of notifications. Here is an edited snippet from that sample that shows how to create a notification with an embedded action:

    NotificationCompat.Action action = new NotificationCompat.Action.Builder(
            R.drawable.ic_result_open, null, NotificationUtil.getExamplePendingIntent(
            context, R.string.example_content_action_clicked)).build();
    
    NotificationCompat.Builder builder =
        new NotificationCompat.Builder(context)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle("Title")
            .setContentText("Context Text")
            .addAction(action)
        .extend(new NotificationCompat.WearableExtender()
            .setContentAction(0));