Mishaal's Android News Feed
13.3K subscribers
1.95K photos
95 videos
8 files
1.58K links
Android news from an Android nerd
Download Telegram
Work profile users, heads up: In Android 14, screenshots you take of work apps will now be saved to the work profile instead of your personal profile!

You may see this "Saved in [Files] in the work profile" notice after taking your first screenshot of a work app after updating.

This change is already live in Android 13 QPR3 Beta 1 and Android 14 DP2, but since very few OEMs merge QPRs, most work profile users won't see this change until Android 14.

This change was first implemented in Android 13 QPR2, but it's gated by the SCREENSHOT_WORK_PROFILE_POLICY flag, which is disabled by default in Android 13 QPR2/Android 14 DP1. You can see the code changes for the new work profile screenshot feature here.

As for why screenshots of work profile apps used to be saved in your personal profile's storage, it's because of the way SystemUI (prior to QPR3/DP2) handled screenshots.

Since your personal & work profiles share the same SystemUI instance (profiles are tied to a parent user), SystemUI needed to know which profile the app belonged to when deciding where to save the screen capture. That logic has been implemented in QPR2+.
Android's share sheet is getting a handful of improvements in Android 14. The biggest one is a dedicated row for app-defined actions, which should hopefully convince some apps to ditch their custom share sheets and use the OS's!

More details here.
As I mentioned earlier, Android 14 adds a new feature that lets Device Controls providers specify an activity to embed in the Device Controls interface. The latest beta version of the Google Home app (H/T 9to5Google) adds support for this new feature. Attached to this post are some screenshots.

Google Home's custom embedded Device Controls activity is shown whether you access Device Controls through the lock screen shortcut or the Quick Settings tile.

So what does this mean for end users? It means that smart home apps (or really, any app that uses Device Controls, like
João Dias's Tasker) can embed a nicer, more custom UI with more useful actions, instead of being limited to a couple of buttons with a preset UI.

Although the API in question (ControlsProviderService#META_DATA_PANEL_ACTIVITY) is public starting with the Android 14 SDK, it also works on Android 13 QPR3 Beta 1, because the SysUI flag guarding it (USE_APP_PANELS) became a "ReleasedFlag" (ie. defaults to true). Part of the code for it is also in AOSP already since Android 13 QPR2's source drop.
Mishaal's Android News Feed
As I mentioned earlier, Android 14 adds a new feature that lets Device Controls providers specify an activity to embed in the Device Controls interface. The latest beta version of the Google Home app (H/T 9to5Google) adds support for this new feature. Attached…
In Android 13 QPR3 Beta 1, currently ONLY the Google Home app is allowed to embed a custom activity in SystemUI's Device Controls interface.

This is because only packages declared in the config_controlsPreferredPackages array can declare activities for use as a panel, and this array currently only holds the package name for the Google Home app (com.google.android.apps.chromecast.app) on Pixels' Android 13 QPR3 Beta 1 builds.

A separate SysUI flag (APP_PANELS_ALL_APPS_ALLOWED) overrides this to allow panels from all apps, but this is disabled by default in Android 13 QPR3 Beta 1 but enabled by default in Android 14 DP2 (which makes sense since this is now a public API in Android 14).
CameraX will soon support concurrent camera streams, allowing you to record from two cameras simultaneously at 720p or 1440p resolution.

The Camera2 API for concurrent camera streaming was introduced in Android 11, so it's nice to see support finally extend to CameraX as well!

Google tested CameraX's Concurrent Camera API on the Pixel 6 Pro, Samsung Galaxy S21, and OnePlus 7 Pro. But there are many more models that support concurrent camera streams.

According to the Google Play Console's Device Catalog, 179 device models declare android.hardware.camera.concurrent, the feature indicating that the vendor correctly configured the front and back cameras to support concurrent camera streaming.

(A great read on the concurrent camera streaming API.)
Although Android has supported the EXT4 file system for a very long time now (Pixels and many others have their read-only system/product/etc partitions formatted in it), you still can't mount external USB/SDcard drives formatted in EXT4.

Well, MediaTek is trying once again to get Google to allow this by introducing a patch to vold (Android's volume daemon) that will add support for mounting EXT4 drives.

A similar patch was rejected in 2020 for security reasons, however: "unfortunately complex filesystems (such as ext4) cannot be mounted directly from untrusted media, due to the potential security vulnerabilities in these complex filesystems. The only safe way to mount these complex filesystems is when they've been wrapped in an encryption layer (such as offered by Adoptable Storage) to ensure that a malicious actor cannot tamper with the contents." - Jeff Sharkey
Android 13 QPR3 Beta 2 is rolling out now!

Build number: T3B2.230316.003
Android is adding a new "enhanced PIN privacy" feature that will disable animations when entering your PIN on the lock screen!

This will hopefully make it harder for shoulder surfers to steal your PIN while you're out in public.

Full details here.
What's new in the March 2023 Google Play System Update? As usual, a lot of bug fixes and under-the-hood changes that don't impact users.

Here are the modules (and their version codes) that were updated:

AdServices: 331418100
Cell Broadcast: 331510000
Media: 331511000
Media Codecs: 331511000
Media Provider: 331512020
Statsd: 331511000
Permission Controller: 331512020
DNS Resolver: 331512000
Tethering: 331511000
WiFi: 331511020

AOSP tags corresponding to all but AdServices are available.

* Cell Broadcast has been updated to "support Ukraine requirement" (play National Alerts and Emergency Alerts regardless of whether DND is on). It also supports emergency alerts in Norway, and if your ringer is set to mute, alerts won't sound.

* DNSResolver adds support for using Google's DNS64 as the DoH provider.

* Photo Picker adds support for syncing width, height, and orientation fields from the external db; and handling local + cloud items in cloud albums.

There are more changes you can browse in the changelog I made here.

I know these changelogs don't reveal much, but literally nobody else is doing them, and I was curious to see what was actually changing in each Google Play System Update, so here we are!
This media is not supported in your browser
VIEW IN TELEGRAM
Woohoo, finally! Nearby Share for Windows is finally here (in beta)! It was announced all the way back in CES 2022 and is finally available today for Windows PCs running Windows 10 and up (no ARM support yet).

Download is available from this page.
If you're planning to manually install Android 14 Beta 1 using the factory image for your Pixel when it's released, do not upgrade platform-tools right now. Version 34.0.0 and newer currently have a bug that prevents them from rebooting to userspace fastboot, causing the attached issue:

The fix is to downgrade to an older platform-tools, like r33.0.3. I ran into this problem when reflashing Android 14 DP2 on my Pixel 6 Pro.

r33.0.3 download.

Issue Tracker for this bug.

A Googler says they've "identified the root cause of this issue and are working on a fix."

As of today, latest platform-tools version does not contain this fix.

Some say Android Flash Tool is unaffected; it may be using an older platform-tools under-the-hood.
Private Compute Services (PCS), the open source part of Android's "Private Compute Core" that handles downloading models from the Internet, is adding support for performing model downloads in a VM on Android 14. This would make model downloads even more secure in Android 14!

Add VM permission to PCS for future usecases in Android 14.

<!-- This permission is for PCS to use pKVM for protected model downloads. -->
<uses-permission android:name="android.permission.MANAGE_VIRTUAL_MACHINE" />

The caveat with this is that this requires devices to support the Android Virtualization Framework (AVF). Currently on Android 13, only the Tensor Pixels support this.

On Android 14, we may see this supported by Linux 6.1-based Snapdragon 8 Gen 3 (?) products.
The April 2023 Android Security Bulletin is now live! The bulletin lists what vulnerabilities have been patched in the 2023-04-01 and 2023-04-05 security patch levels.

There are two RCE issues affecting AOSP "System" components marked as "critical" severity vulnerabilities. No details are available yet for either (CVE-2023-21085 & CVE-2023-21096).

There are also two issues impacting Project Mainline components (MediaProvider and WiFi), but it is unclear when updates to these components will roll out (if they haven't already).
In Android 14, Android's dynamic color engine ("monet") seems to be adding better support for users who enable "high contrast" to improve visibility! Apps should look good for everyone, including those who rely on Android's accessibility features!

In Android 14, the system generates a new FRRO (Fabricated Runtime Resource Overlay) called "dynamic" that overlays several new R.color fields. You can see the mapping in the below screenshot. The full list of new R.color fields can be seen here.

I wasn't sure what these new tokens were really for until I spotted this recent commit to the Material Components library: "[Tokens/Color] Added U color resources for contrast mode support."

What's happening is Android is generating a FRRO with new Material You tonal palettes that take into account if the user has high contrast mode enabled. Monet already accounts for contrast issues when generating palettes, but high contrast presents additional challenges.

The Material Components library will probably handle juggling the various R.color resources to use based on whether high contrast is enabled, so most app developers probably won't have to worry about anything (unless you were directly using R.color values instead of tokens).

(Sidenote: It's not clear if "contrast" is specifically related to "high contrast text" in Settings. There could be some new contrast settings added to the ThemePicker [Wallpaper & styles on Pixels]. We'll have to wait and see.)

As usual, since Google hasn't made a formal announcement on this change yet, there's no guarantee it'll ship in the stable Android 14 release. Also, there's a chance I misinterpreted things, but this also made sense to a few developers I talked to, so I hope not!
The Chrome team continues evaluating how they'll implement support for the Android Photo Picker. Recently they added a flag that controls what Picker is launched:

1) ACTION_GET_CONTENT intent
2) ACTION_PICK_IMAGES intent
3) ACTION_PICK_IMAGES "Plus" intent
4) Chrome Picker

(H/T @LanceAdams for pointing out the flag!)

—-

1) GET_CONTENT is currently handled by DocumentsUI (the system file picker). Google is experimenting with having the new Android Photo Picker "take over" handling of the GET_CONTENT intent. This briefly rolled out in December but was reverted.

2) ACTION_PICK_IMAGES intent is the standard way to invoke the framework Photo Picker on Android 11+ (though Chrome stills seems to require Android 13?). Through GMS, Photo Picker is also backported to Android 4.4+

3) ACTION_PICK_IMAGES "Plus" is interesting. The MIME type is set to */* (ie. all) which Photo Picker does not handle and instead forwards to DocumentsUI. It seems the Chrome team wants the Photo Picker team to add a way to force the Photo Picker to show the "browse" button in the overflow menu; currently this "browse" button only appears when the Photo Picker is invoked through the GET_CONTENT takeover, and tapping it opens the system file picker/DocumentsUI.

I personally think this would be useful; give users the option to open the more feature-rich DocumentsUI, no matter how the Photo Picker is invoked, while still defaulting to the prettier Photo Picker for image/video selection.

4) Chrome Picker, this just launches the old in-app media picker, which means you have to grant Chrome gallery access permissions.