Google is sending out a new version of Messages, the one chat app everybody expects to live at least to the end of 2019. So far, there's not a lot to see on the user-facing front after the update, but there is at least one change to message attachments. The teardown is more interesting, featuring more details on the upcoming spam protection and support for new file types in the share dialog. There are also some bits of polish coming to group messaging.

What's New

Unofficial Changelog: (the stuff we found) Attachment action has been switched from sharing to downloading

Attachments default to saving instead of sharing

Left: v3.8. Center + Right: v3.9.

A subtle change was just made to the conversation view when you're interacting with a file attachment. Long-press to select the attachment, and on v3.8 and earlier you would see a share button appear in the action bar above. As of v3.9, that button will now be replaced with a classic floppy disc icon, which when tapped will immediately save the file to the Downloads folder.

Don't get too worried about the share function, it's still there, but it has been pushed into the overflow menu on to the right. Google probably saw that more people were saving attachments than sharing them.

Teardown

Disclaimer: Teardowns are based on evidence found inside of apks (Android's application package) and are necessarily speculative and usually based on incomplete information. It's possible that the guesses made here are wrong or inaccurate. Even when predictions are correct, there is always a chance that products could change or may be canceled. Much like rumors, nothing is certain until it's officially announced and released. Disclaimer: Teardowns are based on evidence found inside of apks (Android's application package) and are necessarily speculative and usually based on incomplete information. It's possible that the guesses made here are wrong or inaccurate. Even when predictions are correct, there is always a chance that products could change or may be canceled. Much like rumors, nothing is certain until it's officially announced and released. The features discussed below are probably not live yet, or may only be live for a small percentage of users. Unless stated otherwise, don't expect to see these features if you install the apk. All screenshots and images are real unless otherwise stated, and images are only altered to remove personal information.

Spam protection

We've been watching this one for a little while, and now it looks like it's almost here. Spam protection for your text messages should be coming soon. New text and settings layouts have been added with this update that will be used for advertising and managing the feature when it goes live.

< string name = " conversation_list_spam_popup_title " > New! Spam protection </ string >

< string name = " conversation_list_spam_popup_paragraph " > To help protect against spam some data about your messages, but not any content, is sent to Google. </ string >

< string name = " conversation_list_spam_popup_learn_more " > Learn more </ string >

< string name = " conversation_list_spam_popup_positive " > OK </ string >

< string name = " conversation_list_spam_popup_negative " > Manage in Settings </ string >

It looks like there's really not very much to control, just a toggle to enable or disable spam protection. The explanation for the feature is clear that it will be sending "some data" to Google, but won't include your phone number or the content of any messages sent to you, which means potentially sensitive details aren't at risk.

Though, without the content of the message, it's a bit unclear if it's really going to be very helpful for spam detection. All that really remains is the originator of the message and a timestamp, and perhaps some generated metadata like the length of a message, how many were received within a few seconds of each other, and possibly a hash of the content for comparison to other known spam messages — but if we're being honest, that could be easily reversed to figure out the original message.

strings < string name = " spam_settings_activity_title " > Spam protection </ string >

< string name = " spam_detection_pref_title " > Enable spam protection </ string >

< string name = " spam_preference_info_text " > To detect spam, some info about your messages is sent to Google without including the actual content or your phone number. < a href > Learn more < /a > </ string >

< string name = " spam_settings " > Spam protection </ string >

< string name = " spam_settings_pref_key " > spam_settings </ string >

< string name = " spam_detection_pref_key " > spam_detection_enabled </ string > excerpt from /xml/preferences_per_subscription.xml

< PreferenceScreen android: title = " @string/spam_settings " android: key = " @string/spam_settings_pref_key " /> < activity android: name = " com.google.android.apps.messaging.ui.appsettings.SpamSettingsActivity " android: configChanges = " keyboardHidden|orientation|screenSize " android: exported = " false " android: label = " @string/spam_settings_activity_title " android: parentActivityName = " com.google.android.apps.messaging.ui.appsettings.PerSubscriptionSettingsActivity " android: screenOrientation = " user " /> < bool name = " spam_detection_pref_default " > false </ bool > /xml/spam_preferences.xml

< android.support.v7.preference.PreferenceScreen xmlns: android = " http://schemas.android.com/apk/res/android " xmlns: app = " http://schemas.android.com/apk/res-auto " xmlns: aapt = " http://schemas.android.com/aapt " android: layout_width = " match_parent " android: layout_height = " match_parent " >

< android.support.v7.preference.SwitchPreferenceCompat android: persistent = " true " android: title = " @string/spam_detection_pref_title " android: key = " @string/spam_detection_pref_key " android: defaultValue = " @bool/spam_detection_pref_default " />

</ android.support.v7.preference.PreferenceScreen >

While this text is specific about not sending the content of the messages, keep in mind that this only relates to the automatic spam detection. If you're reporting a message to Google manually, that should still include the content.

I'm left wondering if this will really be effective. I certainly want it to be, but it seems susceptible to the same massive weakness as spam protection for calls: Number spoofing. Any reasonably competent spammer is already spoofing the number shown for the sender, so they'll have no trouble getting around most detection. Soooooooo, yeah, it'll do some good, but it's not going to clear things up entirely.

Sharing support for calendar events and office documents

Back in October, Google added a widget to Message's attachment screen to make it a bit easier to share contacts. Now it seems there will be an expansion to a few more commonly shared things, but at least for the moment this may not include actual widgets like the contact sharing did.

First up is calendar events. If you're sending an event invite to somebody and happen to have it in a standard calendar format, you'll soon have the option to share that invite from another app and choose Messages to send it as an attachment. It will support iCal and vCalendar formats.

strings <string name="calendar_file_content_description">Calendar file</string> <activity-alias android:name="com.google.android.apps.messaging.ui.conversationlist.ShareCalendarIntentActivity" android:exported="true" android:label="@string/app_name" android:targetActivity="com.google.android.apps.messaging.ui.conversationlist.ShareIntentActivity">

<intent-filter android:label="@string/share_intent_label">

<action android:name="android.intent.action.SEND" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="text/x-vCalendar" />

<data android:mimeType="text/x-vcalendar" />

<data android:mimeType="text/calendar" />

<data android:mimeType="application/ics" />

<data android:mimeType="application/vcs" />

<data android:mimeType="application/hbs-vcs" />

</intent-filter>

<meta-data android:name="android.service.chooser.chooser_target_service" android:value=".shared.datamodel.BugleChooserTargetService" />

</activity-alias>

Things get a bit more interesting with the next supported filetypes. The list includes Microsoft's Word (doc), Excel (xls), and PowerPoint (ppt) filetypes, plus their newer XML-based formats (i.e. docx, xlsx, and pptx).

strings < activity-alias android: name = " com.google.android.apps.messaging.ui.conversationlist.SharePhaseOneSupportedFileIntentActivity " android: exported = " true " android: label = " @string/app_name " android: targetActivity = " com.google.android.apps.messaging.ui.conversationlist.ShareIntentActivity " >

< intent-filter android: label = " @string/share_intent_label " >

< action android: name = " android.intent.action.SEND " />

< category android: name = " android.intent.category.DEFAULT " />

< data android: mimeType = " application/msword " />

< data android: mimeType = " application/vnd.openxmlformats-officedocument.wordprocessingml.document " />

< data android: mimeType = " application/vnd.openxmlformats-officedocument.presentationml.presentation " />

< data android: mimeType = " application/vnd.ms-powerpoint " />

< data android: mimeType = " application/vnd.openxmlformats-officedocument.spreadsheetml.sheet " />

< data android: mimeType = " application/vnd.ms-excel " />

</ intent-filter >

< meta-data android: name = " android.service.chooser.chooser_target_service " android: value = " .shared.datamodel.BugleChooserTargetService " />

</ activity-alias >

I've tried testing for support on these file types, but none of them appear to be operational yet. Perhaps they're disabled for now until an in-app widget similar to the one added for contacts will be coming for these purposes too.

Join / Leave messages in group chats

And wrapping up on a fairly basic note, there will be messages for group chats when a few different events occur. This includes group creation, when members are added or removed from a group, and a message that only you can see if you change the name of the group. The same messages will be shown regardless of whether the chat is through MMS or RCS.

strings < string name = " someone_added_participant " > %1$s added %2$s to this group </ string >

< string name = " someone_else_created_mms_group " > %1$s created this group MMS with %2$s </ string >

< string name = " someone_else_created_rcs_group " > %1$s created this group chat with %2$s </ string > < string name = " group_renamed " > Group name changed to \"%s\"\10Only you can see this name </ string > < string name = " you_added_participant " > You added %s to this group </ string >

< string name = " you_created_mms_group " > You created this group MMS with %s </ string >

< string name = " you_created_rcs_group " > You created this group chat with %s </ string >

< string name = " you_left_group " > You left this group </ string > < string name = " participant_joined_group " > %s joined this group </ string >

< string name = " participant_left_group " > %s left this group </ string > %1$s added %2$s to this group%1$s created this group MMS with %2$s%1$s created this group chat with %2$sGroup name changed to \"%s\"\10Only you can see this nameYou added %s to this groupYou created this group MMS with %sYou created this group chat with %sYou left this group%s joined this group%s left this group <plurals name="someone_added_person">

<item>%1$s added %2$s to the group</item>

<item>%1$s added %2$s to the group</item>

</plurals>

<plurals name="user_joined_chat">

<item>%s have joined the group</item>

<item>%s has joined the group</item>

</plurals>

<plurals name="user_left_chat">

<item>%s have left the group</item>

<item>%s has left the group</item>

</plurals>

<plurals name="you_added_person">

<item>You added %s to the group</item>

<item>You added %s to the group</item>

</plurals>

Download

The APK is signed by Google and upgrades your existing app. The cryptographic signature guarantees that the file is safe to install and was not tampered with in any way. Rather than wait for Google to push this download to your devices, which can take days, download and install it just like any other APK.