Random Musings on the Android 15 Beta 1
When Google releases a new beta, I rummage through the API differences report, the high-level overviews, and even the release blog post, to see if there are things that warrant more attention from developers. I try to emphasize mainstream features that any developer might reasonably use, along with things that may not get quite as much attention, because they are buried in the JavaDocs.
As often happens with the first beta, we had a bunch of stuff deleted, meaning it shipped in a developer preview then was removed. My assumption is that these represent things that did not quite “make the cut” and are going to be revisited.
That said, we did get a decent bunch of new things as well.
What Might Break You Next Year
Edge-to-edge will be enabled by default on Android 15,
for apps that target Android 15. This means that new apps should be built from the ground up to
be edge-to-edge. Ideally, existing apps that do not fully support edge-to-edge should
take the next 1.5 years to adopt an edge-to-edge presentation. There is a new
android:windowOptOutEdgeToEdgeEnforcement
attribute,
probably for <activity>
, that you can set to true
to perhaps buy more time.
However, the docs for that attribute say that it will be deprecated and disabled
“in a future SDK level”. If they do that in next year’s Android 16, the attribute
will not buy you any meaningful time. Frankly, Google’s penchant for mandating their
particular preferred aesthetics is annoying — as somebody told me on Stack Overflow
over a decade ago, if I wanted somebody forcing their designs on me, I’d be programming
for iOS.
What Makes Me Go 🤨
They added E2eeContactKeysManager
.
On the one hand, it provides first-class support
for end-to-end encryption keys. On the other hand, it is tied to the user’s contacts
app, which seems rather limiting.
They added cover screen support
in an earlier developer preview, and the docs still refer to it. But
they removed the actual property (COMPAT_SMALL_COVER_SCREEN_OPT_IN
) from the SDK.
My guess is that the docs are wrong and this
feature was removed.
WindowManager
now has the concept of “trusted presentations”.
Basically, you can find out if your window is only partially shown or is being
shown mostly translucent. For a multi-window environment, I can see the value in
knowing these things, as it might impact how often you update your UI, or you might
pause media playback. The “trusted”, though, makes me wonder if there is a security
aspect.
They re-added FINGERPRINT_SERVICE
.
The blog post’s section on “Secured background activity launches” doesn’t seem to point to anything new to Beta 1, so I am uncertain what they are referring to.
What Has Nothing to Do With Police Procedural Dramas
We now have access to a ProfilingManager
system service
for requesting certain types of profiling, including heap dumps and system traces.
What Else Is Interesting
ACTION_CHOOSER
, which powers the “share sheet”, now supports
EXTRA_CHOOSER_CONTENT_TYPE_HINT
.
The one documented value for this hint is
CHOOSER_CONTENT_TYPE_ALBUM
,
to hint that the content being shared represents an “album”.
There is a new SecurityStateManager
system service,
which can return the system patch level and kernel version.
A View
can now have an associated “credential request”
tied to CredentialManager
.
Wallet apps can now be set as the default recipient of NFC contactless payments via a new wallet role.
The concept of parent and child activities is being unwound:
getParent()
and isChild()
on Activity
are deprecated.
There are better solutions for this nowadays, as multi-activity UIs slowly fade
from existence.