Android may have started with the mantra that developers are allowed to do anything as long as they can code it, but things have changed over the years as security and privacy have become higher priorities. Every major update in recent decades has included features like added restrictions in the name of protecting users, but some offerings may not have been very necessary. Another Android 11 trade-off has arisen, this time removing the ability for users to select third-party camera apps to take pictures or videos of other apps, forcing users to rely solely on the built-in camera app .
At the heart of this change is one of the defining features of Android: the Intent system. Let’s say you need to take a picture of a novelty coffee goat to sell through an auction app. Since the auction app was not built for photography, the developer chose to leave that to a proper camera app. This is where the Intent system comes into play. Developers are just making an application with a few criteria and Android will ask users to choose from a list of installed apps to do the job.
Camera picker on Android 10.
However, things will change with Android 11 for apps that ask for photos or videos. Three specific intentions will stop working as before, including: VIDEO_CAPTURE, IMAGE_CAPTURE, and IMAGE_CAPTURE_SECURE. Android 11 will now automatically provide the pre-installed camera app to perform these actions without ever having to look for other apps to fill the role.
“… we believe it is the right trade-off to protect the privacy and security of our users.” – Google Issue Tracker.
Google describes the change in a list of new behaviors in Android 11, and confirmed it further in the Issue Tracker. Privacy and security are cited as the reason, but there is no discussion about what exactly made these intentions dangerous. Maybe some users were abused to set up a malicious camera app by default and then use it to record things that should have been kept private.
Not only does Android 11 take the liberty to automatically launch the pre-installed camera app when they apply, it also prevents app developers from easily providing their own interface to simulate the same functionality. I ran a test with some simple code to query the camera apps on a phone, and then ran it on devices running Android 10 and 11 with the same set of camera apps installed. Android 10 returned a full set of apps, but Android 11 reported nothing, not even Google’s own pre-installed Camera app.
Above: Debugger view on Android 10. Below: Same view on Android 11.
However, as CommonsWare’s Mark Murphy points out, Google provides a solution for developers, though it’s not very useful. The documentation advises explicitly checking on installed camera apps by their package names – which means developers should choose preferred apps in advance – and send users directly to those apps. Of course, there are other ways to get options without identifying all the package names, such as getting a list of all the apps and then manually searching for intensity filters, but this seems like too complicated.
The new behavior is maintained in at least the current Android 11 beta release, and it will happen with all apps, regardless of whether they target API 30 or lower. We do not yet know if the Android CTS (Compatibility Test Suite) requires this behavior or if OEMs will allow it to change back to the previous rules, but it is likely that this will become the default going forward.
This is certainly not a devastating change, and for many users who are already standard on their built-in camera, it will be completely transparent. And most apps will still allow users to switch to their preferred camera to grab a good shot, and then download from the gallery. However, this means more work for users, and it’s a kick in the pants for people who regularly snap profile photos with a filter than for those who rely on G Cam ports to replace their stock camera. In addition, some apps are not allowed for different workflows, which means you are sitting with whatever camera app there is.