What was once thought to be an oversight in Android 13 has now been marked as intended behavior:
Most apps will no longer be allowed to retrieve the user's wallpaper. Only apps that request the highly sensitive MANAGE_EXTERNAL_STORAGE permission can do so on Android 13+.
Okay, this is going to require a bit of explaining to make sense.
As part of Google's ongoing Scoped Storage efforts, Android 13 split the READ_EXTERNAL_STORAGE permission into 3 new permissions: READ_MEDIA_AUDIO, READ_MEDIA_VIDEO, and READ_MEDIA_IMAGES.
This was done so that apps that only need to access your images, for example, could do so without also getting access to your audio or video files.
The problem is that the standard API to retrieve the user's wallpaper, WallpaperManager#getDrawable(), still required the app calling it to hold the READ_EXTERNAL_STORAGE permission...which could no longer be granted to newly installed apps on Android 13 targeting API 33.
And requesting one of the new READ_ permissions doesn't help, as these aren't sufficient to use the API.
There were only 3 workarounds:
1) Request the broader MANAGE_EXTERNAL_STORAGE permission, which Google Play audits/heavily restricts the use of. A lot of apps won't qualify.
2) Ask the user to manually grant READ_EXTERNAL_STORAGE via 'adb shell pm grant'. (This works because the permission still exists in Android but Permission Controller doesn't let apps targeting API 33+ request it.) This is not a good workaround to promote to the average user.
3) Continue targeting an older Android version, like Android 12. To maintain compatibility, apps running on Android 13+ that target Android 12 can request READ_EXTERNAL_STORAGE. If the app updates to target Android 13, it'll retain the permission.
This is also not a great workaround as some libraries may require Android 13. Plus, starting August 31, all new apps & updates to existing apps must target Android 13 to be allowed on Google Play.
Most apps will no longer be allowed to retrieve the user's wallpaper. Only apps that request the highly sensitive MANAGE_EXTERNAL_STORAGE permission can do so on Android 13+.
Okay, this is going to require a bit of explaining to make sense.
As part of Google's ongoing Scoped Storage efforts, Android 13 split the READ_EXTERNAL_STORAGE permission into 3 new permissions: READ_MEDIA_AUDIO, READ_MEDIA_VIDEO, and READ_MEDIA_IMAGES.
This was done so that apps that only need to access your images, for example, could do so without also getting access to your audio or video files.
The problem is that the standard API to retrieve the user's wallpaper, WallpaperManager#getDrawable(), still required the app calling it to hold the READ_EXTERNAL_STORAGE permission...which could no longer be granted to newly installed apps on Android 13 targeting API 33.
And requesting one of the new READ_ permissions doesn't help, as these aren't sufficient to use the API.
There were only 3 workarounds:
1) Request the broader MANAGE_EXTERNAL_STORAGE permission, which Google Play audits/heavily restricts the use of. A lot of apps won't qualify.
2) Ask the user to manually grant READ_EXTERNAL_STORAGE via 'adb shell pm grant'. (This works because the permission still exists in Android but Permission Controller doesn't let apps targeting API 33+ request it.) This is not a good workaround to promote to the average user.
3) Continue targeting an older Android version, like Android 12. To maintain compatibility, apps running on Android 13+ that target Android 12 can request READ_EXTERNAL_STORAGE. If the app updates to target Android 13, it'll retain the permission.
This is also not a great workaround as some libraries may require Android 13. Plus, starting August 31, all new apps & updates to existing apps must target Android 13 to be allowed on Google Play.
👍31🔥4👎2❤1👏1
I talked about this issue last year when Zachary Wander brought it to my attention. At the time, it seemed like it was an oversight, so developers filed a report on the Issue Tracker. Unfortunately, Android 13 released with no fix/update on the issue...
On May 2, 2023, though, Google marked the issue with "Status: Won't Fix (Intended Behavior)".
Their reasoning:
Google doesn't say why they require apps to request the sensitive MANAGE_EXTERNAL_STORAGE permission instead of something less far-reaching like READ_MEDIA_IMAGES, but there is a valid reason for limiting which apps can access your wallpaper. As this blog post points out, it's possible to create a cross-app identifier by checking the user's wallpaper. Also, many people use a personal photo as their wallpaper, which you may not want untrusted apps to have access to.
As some developers point out on the Issue Tracker, though, there are some potentially useful things that this change makes more difficult to do for third-party launchers.
(H/T to Zachary again for first spotting this change a few months back on Mastodon, and to this XDA article for reminding me of this.)
Sample app demonstrating how the Android 13 update affects getDrawable. Sample app demonstrating that MANAGE_EXTERNAL_STORAGE allows apps to retrieve the wallpaper.
On May 2, 2023, though, Google marked the issue with "Status: Won't Fix (Intended Behavior)".
Their reasoning:
"We discussed the behavior with our product and engineering team and they were supportive of keeping the API only accessible to privileged system apps."
The Android API docs have been updated to reflect the new behavior. Android 14's new READ_WALLPAPER_INTERNAL permission has a protection level of signature|privileged, so it can only be granted to privileged system apps.Google doesn't say why they require apps to request the sensitive MANAGE_EXTERNAL_STORAGE permission instead of something less far-reaching like READ_MEDIA_IMAGES, but there is a valid reason for limiting which apps can access your wallpaper. As this blog post points out, it's possible to create a cross-app identifier by checking the user's wallpaper. Also, many people use a personal photo as their wallpaper, which you may not want untrusted apps to have access to.
As some developers point out on the Issue Tracker, though, there are some potentially useful things that this change makes more difficult to do for third-party launchers.
(H/T to Zachary again for first spotting this change a few months back on Mastodon, and to this XDA article for reminding me of this.)
Sample app demonstrating how the Android 13 update affects getDrawable. Sample app demonstrating that MANAGE_EXTERNAL_STORAGE allows apps to retrieve the wallpaper.
👍15😢1
The sources for SDK 34 are now available through Android Studio!
Note that this isn't the full Android 14 OS source code, so you can't build an OS image from this. But if you're a developer looking to update your app to use Android 14 APIs, this could help you during debugging.
Curiously, there are many hidden/system APIs included in this source code release, which doesn't make sense since these can't be used by third-party apps and aren't documented in the public SDK.
The Android 13 SDK sources also includes many APIs marked SystemAPI or hide, so I guess these just aren't removed. It's not like you can use them without reflection/swapping out android.jar anyway, though.
Note that this isn't the full Android 14 OS source code, so you can't build an OS image from this. But if you're a developer looking to update your app to use Android 14 APIs, this could help you during debugging.
Curiously, there are many hidden/system APIs included in this source code release, which doesn't make sense since these can't be used by third-party apps and aren't documented in the public SDK.
The Android 13 SDK sources also includes many APIs marked SystemAPI or hide, so I guess these just aren't removed. It's not like you can use them without reflection/swapping out android.jar anyway, though.
🔥23👍7
Mishaal's Android News Feed
The sources for SDK 34 are now available through Android Studio! Note that this isn't the full Android 14 OS source code, so you can't build an OS image from this. But if you're a developer looking to update your app to use Android 14 APIs, this could help…
Satellite communication APIs did make their way into Android 14, though everything is marked as "hide" so they're not available to third-party apps.
There's going to be a satellite service "demo mode". Supported datagrams include SOS messages and location sharing.
Satellite support will, of course, depend on the modem hardware in the device you're using. It's not something that's going to be supported by every device running Android 14.
There's going to be a satellite service "demo mode". Supported datagrams include SOS messages and location sharing.
Satellite support will, of course, depend on the modem hardware in the device you're using. It's not something that's going to be supported by every device running Android 14.
🔥26👍4
Mishaal's Android News Feed
Satellite communication APIs did make their way into Android 14, though everything is marked as "hide" so they're not available to third-party apps. There's going to be a satellite service "demo mode". Supported datagrams include SOS messages and location…
More details:
The
The app that handles the "pointing UI" is defined in the framework by
The
The
SatelliteSOSMessageRecommender module monitors the cell service and IMS registration states during an emergency call and notifies the Dialer when Telephony is unable to find a network so that the Dialer can prompt the user to switch to satellite messaging.The app that handles the "pointing UI" is defined in the framework by
config_pointing_ui_package, while the app that implements the satellite service is defined by config_satellite_service_package. Both are unset on my Pixel.The
Settings.Global.SATELLITE_MODE_RADIOS string holds which radios to disable while satellite mode is on. Bluetooth, NFC, WiFi, and UWB can be toggled when satellite mode is enabled. Separately, another method determines whether to enable the cellular modem.👍22🔥6
I'm doing social media wrong, so I need your help!
If you'd like to see me continue to freely provide the best Android OS news coverage on the Internet, please consider supporting me on Patreon.
When I say I'm doing social media wrong, it's because I don't post low-effort engagement bait, spam affiliate links, or take sponsors. Instead, I spend hours each day analyzing, researching, & testing things so I can bring you the best possible coverage.
I've broken more stories on the Android OS than anyone & my posts online have been cited so much that I've lost track. But I don't get a $ for any of the hours I pour into posting on social media. In fact I've lost $ because of premium subnoscriptions just to bring you better content.
So if you want to see me continue to post the kind of high-quality, in-depth OS deep dives and other breakdowns that I'm known for, please support me on Patreon if you can!
Of course, you'll get some Patron-exclusive benefits, including:
* Priority responses to questions (I get too many DMs a day to properly answer, so Patrons will get prioritized)
* Access to exclusive Android news posts
* An invite to my new member-only Discord server
Happy to answer any questions about what I'm planning! There's a couple of details I left out for brevity, so if you have questions about why I'm not doing X or Y, I'll answer them!
If you'd like to see me continue to freely provide the best Android OS news coverage on the Internet, please consider supporting me on Patreon.
When I say I'm doing social media wrong, it's because I don't post low-effort engagement bait, spam affiliate links, or take sponsors. Instead, I spend hours each day analyzing, researching, & testing things so I can bring you the best possible coverage.
I've broken more stories on the Android OS than anyone & my posts online have been cited so much that I've lost track. But I don't get a $ for any of the hours I pour into posting on social media. In fact I've lost $ because of premium subnoscriptions just to bring you better content.
So if you want to see me continue to post the kind of high-quality, in-depth OS deep dives and other breakdowns that I'm known for, please support me on Patreon if you can!
Of course, you'll get some Patron-exclusive benefits, including:
* Priority responses to questions (I get too many DMs a day to properly answer, so Patrons will get prioritized)
* Access to exclusive Android news posts
* An invite to my new member-only Discord server
Happy to answer any questions about what I'm planning! There's a couple of details I left out for brevity, so if you have questions about why I'm not doing X or Y, I'll answer them!
👍58❤35👎5🫡4🤔2❤🔥1🥰1👏1
Google is working on a new "Remote Authentication" feature for Android 15!
It's unclear exactly what it will be used for, but it seems to be tied to ultra-wideband (UWB) and Wear OS (Pixel Watch 2?)
Details available exclusively for Patrons.
It's unclear exactly what it will be used for, but it seems to be tied to ultra-wideband (UWB) and Wear OS (Pixel Watch 2?)
Details available exclusively for Patrons.
👍22❤1👎1
Mishaal's Android News Feed
More details: The SatelliteSOSMessageRecommender module monitors the cell service and IMS registration states during an emergency call and notifies the Dialer when Telephony is unable to find a network so that the Dialer can prompt the user to switch to satellite…
Great comment by user Starks on whether the Pixel 7 or Pixel 8 will support satellite mode:
(This was here on Telegram, but Starks is also on Reddit where they're pretty well known for their modem/cellular deep dives!)
(This was here on Telegram, but Starks is also on Reddit where they're pretty well known for their modem/cellular deep dives!)
👍22🤔3
When will Google release Android 14?
I've gotten this question a LOT, and the truth is, I've had a date in mind for months because the release schedule is planned well in advance.
More info exclusively for Patrons.
Generally, Google's planned release schedule is pretty accurate, but things can change, so they may shift a certain release by a few days or week.
(Case in point: Beta 5 was planned for yesterday but instead seems to be happening today.)
I've gotten this question a LOT, and the truth is, I've had a date in mind for months because the release schedule is planned well in advance.
More info exclusively for Patrons.
Generally, Google's planned release schedule is pretty accurate, but things can change, so they may shift a certain release by a few days or week.
(Case in point: Beta 5 was planned for yesterday but instead seems to be happening today.)
👍35💩10🥱6❤2🥴2🥰1
Are you a company or vendor who works with Android and wants to support me? Based on feedback, I've added a new tier on Patreon called "Company".
If you have questions/want to hear my thoughts on something, feel free to reach out to schedule a meeting!
No joke, I've seen my tweets appear in internal presentations from some OEMs (who I won't name, obviously). I've also seen OEM devs get off a call with Google and then immediately ask me about something they saw in Google's presentation because they couldn't get an answer, LOL.
For months, one of my tweets was the only relevant search result for Google's Enterprise Devices Licensing Agreement (EDLA). As a result, I've had two companies reach out to me instead of Google asking about the program...
Unless you're a tier 1 OEM, you don't get fancy meetings/presentations explaining what's coming to Android. Most Android Partners have access to partner docs and can look through the source code, but honestly, who has time for that?
That's why y'all follow me, after all!
If you have questions/want to hear my thoughts on something, feel free to reach out to schedule a meeting!
No joke, I've seen my tweets appear in internal presentations from some OEMs (who I won't name, obviously). I've also seen OEM devs get off a call with Google and then immediately ask me about something they saw in Google's presentation because they couldn't get an answer, LOL.
For months, one of my tweets was the only relevant search result for Google's Enterprise Devices Licensing Agreement (EDLA). As a result, I've had two companies reach out to me instead of Google asking about the program...
Unless you're a tier 1 OEM, you don't get fancy meetings/presentations explaining what's coming to Android. Most Android Partners have access to partner docs and can look through the source code, but honestly, who has time for that?
That's why y'all follow me, after all!
👍46👏13❤6🥰1