Automation Apps Are Broken By Android 13's Privacy Push That's Working As Intended
Starting with Android 10, most apps can no longer read the clipboard contents in the background. Excepting the Android System Intelligence component and apps signed with the platform certificate, apps are required to be in the foreground to access the clipboard. However, some app developers wanted the functionality of automatically reading the keyboard whenever its contents change in order to sync keyboard contents across devices or trigger automatic processes. Thus, the developer of the automation app Tasker created Join.
Join offers a way to automatically pull clipboard updates by relying on system log updates. Join taps into the API that watches for clipboard changes, but anytime the clipboard changes the system denies apps access to this API if they are not in the foreground. Importantly, every time the system denies access to this API it writes a log entry indicating that this permission was denied. Join takes advantage of this log entry, though users must grant the app the READ_LOGS permission using the Android Debug Bridge (ADB) command line utility. Using this permission, Join watches the system logs for entries denying access to the clipboard change API, which indicate that the clipboard has changed. Whenever Join detects this log entry, it renders an invisible overlay in the foreground and reads the clipboard contents.
Google has indicated in an Issue Tracker thread that it won’t be fixing its breakage of Join’s clipboard reading function. The company explains its stance as follows, “Disallowing background access is working-as-intended. We would discourage any type of automation testing relying on logcat. Trying to communicate with logcat without an interaction with the developer/users are not intended use case.” While Join provided a way for Android to sync clipboard contents across devices, Google has introduced new clipboard sharing features in Android 13 that could replace some of this functionality. However, Join users should be aware that the update to Android 13 is a one-way trip, so users won’t be able to fix Join by rolling back to Android 12.