Schedule messages to be sent at a later time in Google Chat

What’s changing

Today we are launching a new feature to enable users to schedule messages in Google Chat to be sent at a later time or date. This  highly requested feature is part of our commitment to enable more productive and seamless communication for our users.

By scheduling messages, Chat users can be respectful of colleagues time and avoid sending messages late at night or early in the morning when recipients may be in a different time zone or unavailable.

  • When composing a message in a Chat conversation, by clicking the down arrow next to the compose bar, users can select a time to send the message up to 120 days in the future.
  • If a user has a scheduled message in a conversation, a banner will appear above the compose box. Clicking this banner or the new Drafts shortcut in the left panel will open a dedicated area to manage all scheduled messages, where users can edit, reschedule, or cancel them.
  • The Draft shortcut is only available when there are scheduled messages.
Clicking on the down arrow next to the Sent button brings up the Schedule send menu

Clicking on the down arrow next to the Sent button brings up the Schedule send menu

New Drafts shortcut to edit, reschedule, send, and delete your scheduled messages

New Drafts shortcut to edit, reschedule, send, and delete your scheduled messages

Getting started

Rollout pace

Availability

  • Available to all Google Workspace customers, Workspace Individual Subscribers, and users with personal Google accounts

Resources

Building agents with the ADK and the new Interactions API

The new Gemini Interactions API enables stateful, multi-turn AI agent workflows, providing a single interface for raw models and the Gemini Deep Research Agent. It can be integrated with existing ADK systems as a superior inference engine with simplified state management, or used as a transparent remote A2A agent via InteractionsApiTransport, allowing seamless expansion of multi-agent systems with minimal refactoring.

Building agents with the ADK and the new Interactions API

The new Gemini Interactions API enables stateful, multi-turn AI agent workflows, providing a single interface for raw models and the Gemini Deep Research Agent. It can be integrated with existing ADK systems as a superior inference engine with simplified state management, or used as a transparent remote A2A agent via InteractionsApiTransport, allowing seamless expansion of multi-agent systems with minimal refactoring.

Enhancing Android security: Stop malware from snooping on your app data

Posted by Bennet Manuel, Product Management, Android App Safety and Rob Clifford, Developer Relations




Security is foundational to Android. We partner with you to keep the platform safe and protect user data by offering powerful security tools and features, like Credential Manager and FLAG_SECURE. Every Android release brings performance and security enhancements, and with Android 16, you can take simple, significant steps to strengthen your app’s defenses. Check out our video or continue reading to learn more about our enhanced protections for accessibility APIs.



Protect your app from snooping with a single line of code

We’ve seen that bad actors sometimes try to exploit accessibility API features to read sensitive information, like passwords and financial details, directly from the screen and manipulate a user's device by injecting touches. To combat this, Android 16 provides a new, powerful defense in a single line of code: accessibilityDataSensitive.

The accessibilityDataSensitive flag allows you to explicitly mark a view or composable as containing sensitive data. When you set this flag to true on your app, you are essentially blocking potentially malicious apps from accessing your sensitive view data or performing interactions on it. Here is how it works: any app requesting accessibility permission that hasn't explicitly declared itself as a legitimate accessibility tool (isAccessibilityTool=true) is denied access to that view.

This simple but effective change helps to prevent malware from stealing information and performing unauthorized actions, all without impacting users’ experience of legitimate accessibility tools. Note: If an app is not an accessibility tool but requests accessibility permissions and sets isAccessibilityTool=true, Play will reject it and Google Play Protect will block it on user devices. 

Automatic, enhanced security for setFilterTouchesWhenObscured protection

We’ve already integrated this new accessibilityDataSensitive security functionality with the existing setFilterTouchesWhenObscured method. 

If you already use setFilterTouchesWhenObscured(true) to protect your app from tapjacking, your views are automatically treated as sensitive data for accessibility. By enhancing the setFilterTouchesWhenObscured method with accessibilityDataSensitive protections, we’re instantly giving everyone an additional layer of defense with no extra work.

Getting started

We recommend that you use setFilterTouchesWhenObscured, or alternatively the accessibilityDataSensitive flag, on any screen that contains sensitive information, including login pages, payment flows, and any view displaying personal or financial data.

For Jetpack Compose

setFilterTouchesWhenObscured

accessibilityDataSensitive


val composeView = LocalView.current DisposableEffect(Unit) { composeView.filterTouchesWhenObscured = true onDispose { composeView.filterTouchesWhenObscured = false } }


Use the semantics modifier to apply the sensitiveData property to a composable.

BasicText { text = “Your password”,

            modifier = Modifier.semantics {

                sensitiveData = true }}




For View-based apps

In your XML layout, add the relevant attribute to the sensitive view.

setFilterTouchesWhenObscured

accessibilityDataSensitive


<TextView android:filterTouchesWhenObscured="true" />



<TextView android:accessibilityDataSensitive="true" />



Alternatively, you can set the property programmatically in Java or Kotlin:

setFilterTouchesWhenObscured

accessibilityDataSensitive


myView.filterTouchesWhenObscured = true;



myView.isAccessibilityDataSensitive = true;



myView.setFilterTouchesWhenObscured(true)



myView.setAccessibilityDataSensitive(true);



Read more about the accessibilityDataSensitive and setFilterTouchesWhenObscured flags in the Tapjacking guide.



Partnering with developers to keep users safe

We worked with developers early to ensure this feature meets real-world needs and integrates smoothly into your workflow.

 "We've always prioritized protecting our customers' sensitive financial data, which required us to build our own protection layer against accessibility-based malware. Revolut strongly supports the introduction of this new, official Android API, as it allows us to gradually move away from our custom code in favor of a robust, single-line platform defense."

- Vladimir Kozhevnikov, Android Engineer at Revolut


You can play a crucial role in protecting your users from malicious accessibility-based attacks by adopting these features. We encourage all developers to integrate these features into their apps to help keep users safe.

Together, we can build a more secure and trustworthy experience for everyone.

Enhancing Android security: Stop malware from snooping on your app data

Posted by Bennet Manuel, Product Management, Android App Safety and Rob Clifford, Developer Relations




Security is foundational to Android. We partner with you to keep the platform safe and protect user data by offering powerful security tools and features, like Credential Manager and FLAG_SECURE. Every Android release brings performance and security enhancements, and with Android 16, you can take simple, significant steps to strengthen your app’s defenses. Check out our video or continue reading to learn more about our enhanced protections for accessibility APIs.



Protect your app from snooping with a single line of code

We’ve seen that bad actors sometimes try to exploit accessibility API features to read sensitive information, like passwords and financial details, directly from the screen and manipulate a user's device by injecting touches. To combat this, Android 16 provides a new, powerful defense in a single line of code: accessibilityDataSensitive.

The accessibilityDataSensitive flag allows you to explicitly mark a view or composable as containing sensitive data. When you set this flag to true on your app, you are essentially blocking potentially malicious apps from accessing your sensitive view data or performing interactions on it. Here is how it works: any app requesting accessibility permission that hasn't explicitly declared itself as a legitimate accessibility tool (isAccessibilityTool=true) is denied access to that view.

This simple but effective change helps to prevent malware from stealing information and performing unauthorized actions, all without impacting users’ experience of legitimate accessibility tools. Note: If an app is not an accessibility tool but requests accessibility permissions and sets isAccessibilityTool=true, Play will reject it and Google Play Protect will block it on user devices. 

Automatic, enhanced security for setFilterTouchesWhenObscured protection

We’ve already integrated this new accessibilityDataSensitive security functionality with the existing setFilterTouchesWhenObscured method. 

If you already use setFilterTouchesWhenObscured(true) to protect your app from tapjacking, your views are automatically treated as sensitive data for accessibility. By enhancing the setFilterTouchesWhenObscured method with accessibilityDataSensitive protections, we’re instantly giving everyone an additional layer of defense with no extra work.

Getting started

We recommend that you use setFilterTouchesWhenObscured, or alternatively the accessibilityDataSensitive flag, on any screen that contains sensitive information, including login pages, payment flows, and any view displaying personal or financial data.

For Jetpack Compose

setFilterTouchesWhenObscured

accessibilityDataSensitive


val composeView = LocalView.current DisposableEffect(Unit) { composeView.filterTouchesWhenObscured = true onDispose { composeView.filterTouchesWhenObscured = false } }


Use the semantics modifier to apply the sensitiveData property to a composable.

BasicText { text = “Your password”,

            modifier = Modifier.semantics {

                sensitiveData = true }}




For View-based apps

In your XML layout, add the relevant attribute to the sensitive view.

setFilterTouchesWhenObscured

accessibilityDataSensitive


<TextView android:filterTouchesWhenObscured="true" />



<TextView android:accessibilityDataSensitive="true" />



Alternatively, you can set the property programmatically in Java or Kotlin:

setFilterTouchesWhenObscured

accessibilityDataSensitive


myView.filterTouchesWhenObscured = true;



myView.isAccessibilityDataSensitive = true;



myView.setFilterTouchesWhenObscured(true)



myView.setAccessibilityDataSensitive(true);



Read more about the accessibilityDataSensitive and setFilterTouchesWhenObscured flags in the Tapjacking guide.



Partnering with developers to keep users safe

We worked with developers early to ensure this feature meets real-world needs and integrates smoothly into your workflow.

 "We've always prioritized protecting our customers' sensitive financial data, which required us to build our own protection layer against accessibility-based malware. Revolut strongly supports the introduction of this new, official Android API, as it allows us to gradually move away from our custom code in favor of a robust, single-line platform defense."

- Vladimir Kozhevnikov, Android Engineer at Revolut


You can play a crucial role in protecting your users from malicious accessibility-based attacks by adopting these features. We encourage all developers to integrate these features into their apps to help keep users safe.

Together, we can build a more secure and trustworthy experience for everyone.

#WeArePlay: How Matraquina helps non-verbal kids communicate

Posted by Robbie McLachlan, Developer Marketing




In our latest #WeArePlay film, we meet Adriano, Wagner and Grazyelle. The trio are behind Matraquinha, an app helping thousands of non-verbal children in more than 80 countries communicate. Discover more about their inspiring story and the impact on their own son, Gabriel.

Wagner, you developed Matraquinha for a deeply personal reason: your son, Gabriel. Can you tell us what inspired you to create this app for him?

My wife and I adopted our son at 10 months. We later found out he couldn’t speak and received a diagnosis of Autism, so we started researching ways to communicate with him and vice versa. The idea started with drawings of objects and phrases on cards for him to point to things he wanted. We wanted to make this more digital and so, with my brother Adriano’s help, we developed the Matraquinha app. 

How does the app work?

Wagner: The app has almost 250 drawings, like digital flashcards. The child points to a card and the app announces the name of the object, place or feeling. Parents then more clearly understand what their child needs. 

Grazyelle: As a mom, after Gabriel started using the app, he was able to communicate and that reduced his feeling of crisis a lot. Before, he would be frustrated. Now with the app, my son can tell me what he needs.



Matraquinha started as a personal app for your family, but is now helping users in over 77 countries. How did you achieve this scale? 

Adriano: When my brother came to me with the idea, we thought it would be for our family and had no idea it would turn into a global resource for more families. In the first week, we had 1 download. By the next year, we had 100,000 downloads, all organic with no ads. It showed us how important the app was to help families communicate with their non-verbal children.

Adriano: It’s truly incredible for us to be on Google Play because, even without being senior engineers, this tool gave us an opportunity—an entry point—to bring communication to other families. We use other tools like Firebase Analytics which lets us see which cards and categories people are using the most, this helps us when developing new versions.


What is next for Matraquinha, and what features are you most excited about bringing to the community?

We are adding an extra 500 real images to the app, because kids are growing and no longer want drawings as they become teenagers. We’re also creating a board that has pronouns, nouns, and verbs. So say, a child wants to let the parents know they like to eat hamburgers, they can tap on the different words and create a sentence. This gives them even more independence. We are also exploring ways to use AI to make the app even more personal and pursuing the same goal: ensuring every child can be heard.

Discover other inspiring app and game founders featured in #WeArePlay.