Google App v7.3.16 beta is rolling out to users on the Play Store, and while our traditional APK teardown hasn't revealed much information that we think is interesting, there is one feature that I thought would be worth sharing. Within the Android Manifest file are new strings that implement a Notification Listener Service which hints at the possibility that the Google App can intercept your notifications. For what exact purpose, we can only speculate at this time.

Although an APK teardown can often predict features that may arrive in a future update of an application, it is possible that any of the features we mention here may not make it in a future release. This is because these features are currently unimplemented in the live build and may be pulled at any time by Google in a future build.


Google App v7.3 APK Teardown

Now I know what some of you may be thinking: "doesn't the Google App already support notifications?" Yes, but that isn't what we're talking about here. The notifications that the Google App supports are for various reminders and updates that Google Now sends to you. A notification listener service allows the Google App to intercept notifications posted by other applications.

Within the Android Manifest file is the inclusion of the new Notification Listener Service. There isn't really much to say here apart from the fact that it even exists, to be honest.

        <service android:enabled="false" android:exported="true" android:name="com.google.android.apps.gsa.notificationlistener.GsaNotificationListenerService" android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" android:process=":interactor">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService"/>
</intent-filter>
</service>

The corresponding explicit broadcast receiver that is used by the Google App in order to react to a posted/remove notification is also present.

        <receiver android:name="com.google.android.apps.gsa.staticplugins.ipa.notifications.IpaBroadcastReceiver" android:process=":interactor">
<intent-filter>
<action android:name="com.google.android.apps.gsa.notificationlistener.NOTIFICATION_LISTENER_SERVICE_CONNECTED"/>
</intent-filter>
</receiver>

Within one of the new smali files (d.smali located in com/google/android/apps/gsa/notificationlistener) is more evidence for this being implemented:

        invoke-virtual {p0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v1

const-string v2, "enabled_notification_listeners"

invoke-static {v1, v2}, Landroid/provider/Settings$Secure;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;

move-result-object v1

The reference to the string "enabled_notification_listeners" is referring to the Settings.Secure preference by the same name that holds a colon separated list of enabled notification listener services.

At this time, the notification listener service cannot be enabled in the live build, so we can't confirm exactly what it will be used for. However, if we were to speculate a bit, we believe this may be in reference to the "Bisto" device type we uncovered last month. A teardown of the Google App at that time revealed that Bisto would be a type of headphone that you could listen to your notifications through. But the only way to listen to all of your phone's notifications is if the app has a Notification Listener Service enabled, so that's the most likely explanation we're going with.


I’ll continue digging around and update this article if I find anything interesting in the live build, or through an APK teardown. If you are looking for this latest release of the Google App, you can download it right now over at APKMirror. Follow our APK Teardown tag for more articles like this!