Random Musings on the Android 17 Beta 2
Less than two weeks after the release of Android 17 Beta 1 (and its associated random musings), Beta 2 dropped. And since the “Platform Stability milestone” is slated for March, we could get that in just a few days.
😑
What You Should Test Very Soon
While the whole “bubbles” thing seems cute, and while Google thinks that just supporting multi-window is sufficient… I recommend testing it.
If your app might need to talk to devices on the local network, I also recommend
examining ACCESS_LOCAL_NETWORK
closely. Google’s documentation on this is very muddled:
-
The JavaDocs/KDocs do not state the protection level; the blog post implies that it is
dangerous. -
The blog post hints that maybe this only kicks in with
targetSdkof Android 17, but the release notes do not indicate one way or another, and this change is not listed in either of the “behavior change” pages that spell out what affects only those targeting Android 17 and what affects all apps.
What Seems Nice
The ACTION_PICK_CONTACTS API, for getting user-specified field-level access to contact data,
seems promising.
The ACTION_OPEN_EYE_DROPPER API, for getting a specific on-screen color from the user, is
interesting.
What Seems Cute But Largely Pointless
There is a new “handoff” API, centered around setHandoffEnabled() on Activity,
that enables “handing off” running apps between devices, such as a phone and a tablet. My guess
is that the percentage of Android app users owning 2+ devices is very low and will not be increasing
much.
What Might Be Bubblicious
A task can now have a TaskLocation,
“that consists of the host display identifier and rectangular bounds in the pixel-based coordinate system relative to host display”.
What Is Going Away
There had been a setContentCaptureEnabled() function on ContentCaptureManager to opt out
of content capture. That is now deprecated – use FLAG_SECURE.
The Bluetooth SCO support in AudioManager is largely deprecated, as they are routing you
to newer “communication device” APIs.
isCredential() and setIsCredential() on View are deprecated, as “the purpose and usage
expectations of this property were never clearly defined”. Frankly, we can say that about a lot
of the Android SDK.
What Else Seems Interesting
There is a new nativeService attribute,
presumably going on the <service> manifest element. This will bypass the Android Runtime for the
process hosting the service, and instead loads a native library of yours. For isolated services that eschew
the Android SDK, this avoids the overhead of the Android Runtime.
There are 7 new permissions, though most are role-specific.
There is a new Notification.Metric
class and related classes like Notification.Metric.FixedFloat,
but it is unclear what they are for.
DocumentsProvider now offers an API for trash.
A network security policy can now request domain encryption modes.

