Blog

Android 12: What New Features To Expect & How To Get Your Apps Ready

Spread the love

With the Android 12 release date expected for September, it looks like some big new features are coming. In fact, Google describes it as the biggest design change in Android’s history. It’s good news for developers since the new version of Android will offer better tools to build amazing user experiences. 

To help you prepare, we’ve put together this handy guide that explains the major changes you need to know about to get your apps ready for Android 12.

In this article we’ll discuss:

  • The biggest changes from Android 11 to 12.
  • What new features are in Android 12 including changes to app hibernation, location permissions, bluetooth permissions, notifications, updates to foreground services, the new privacy dashboard and more.

Android 12 release date

Android 12’s Beta 1 was released in May 2021, followed by Beta 2 in June, Beta 3 in July and Beta 4 on August 11. The final version of Android 12 is likely to be released in September 2021 based on past releases, however it’s likely it will be Google’s own Pixel phone’s that get the software first. 

Samsung has extended the number of Android updates its phones are eligible for, so recent devices should be okay, along with any phones on the Android One platform such as many Motorola and Nokia handsets. If you’re not sure, see the device-maker partner sites for a full list of devices that are eligible for Android 12.

Although Android adoption rates have been steadily increasing with each release in recent years, it’s predicted that many users are likely to remain on earlier Android versions.

Android 12 vs Android 11

Similar to Apple’s recent privacy updates, the new version of Android will place more emphasis on privacy and permissions with its new Privacy Dashboard. It also focuses on a new UI ‘Material You’ that allows users to completely personalize their phone with custom colors and redesigned widgets. 

In addition, there are numerous other feature updates to improve functionality and performance including App Hibernation, new approximate location permissions, a redesigned notification space and much more. 

What new features are in Android 12?

App Hibernation

One of the most significant new features in Android 12 is App Hibernation. This expands upon the permissions auto-reset behaviour in Android 11, allowing users to put your app into a hibernation state if it’s not actively being used. 

Apps that are hibernated will optimize their storage usage and any granted permissions will be revoked. If an app hasn’t been used for several months, it will automatically be put into hibernation, however users can toggle the feature on or off if they don’t want an app to go into hibernation.

Key points:

  • Any files in your app’s cache are removed.
  • The app can’t run jobs or alerts in the background.
  • It can’t receive push notifications including high-priority messages that are sent through Firebase Cloud Messaging.
  • You need to reschedule any jobs, alerts and notifications that were scheduled before the app went into hibernation.
  • You can send the user a request to grant your app exemption from hibernation.
  • Test the hibernation behaviour by following these steps.

Location permissions

Notably, the updated OS is giving users more control over location permissions. These apply to apps that are targeting Android 12 or higher.

Key points:

  • The user’s choice in the location permissions dialog also applies to background location. So if the user grants background location permissions but only approximate location access in the foreground, your app will only be able to access approximate location in the background. 
  • The user also sets the preference for the duration of permissions. These are the same as in Android 11 – ‘While using the app’, ‘Only this time’ or ‘Deny’.

Approximate Location

Users will have a clear choice regarding the precision of location provided by the app. They can request that your app accesses only approximate location information, even when it requests the ‘ACCESS_FINE_LOCATION’ runtime permission.

What to do:

  • In order to access Precise Location you must now request both the ACCESS_FINE_LOCATION request and the ACCESS_COARSE_LOCATION request at the same time. Both should be included in a single runtime request, the user will then choose which permissions to grant. See the table below for more details.

What if my app only requests precise location?

In this case you must request that the user upgrade the permissions. If necessary, explain why your app needs the permission. To evaluate whether you need to update your app to support user-configurable location accuracy, complete the tests described in Android for Developers

What does the user see?

  1. If you only request ACCESS_COARSE_LOCATION, the user sees figure 1:

  1. If you request ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION together (required for precise location permissions) user sees figure 2:

  1. If you need to request that the user update permissions  (because you currently only request Access_Fine_Location but now the requirement is that you must request Access_Coarse_Location too) the user sees:

System settings to adjust location permissions for apps

With Android 12, users can navigate to system settings to set their preferred location accuracy for any app, regardless of that app’s targeted SDK version. This is the case even where your app is installed on a device running on Android 11 or lower and then upgrades to Android 12.

Key points:

  • If the user downgrades your app’s location access from precise to approximate, the system restarts your app’s process.

Bluetooth permissions

Google’s updated OS will also include changes to Bluetooth permissions with the introduction of BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE and BLUETOOTH_CONNECT permissions. These let your app scan for nearby devices without needing to request location permission, as long as your app targets Android 12. 

Key points:

  • You must request user approval before your app can look for Bluetooth devices, make a device discoverable to other devices or communicate with already-paired devices.
  • Check whether your app uses Bluetooth to derive location. If your app does derive physical location, you must continue to declare the ACCESS_FINE_LOCATION permission in your app’s manifest. Follow steps here. If your app does not derive physical location, complete the following steps:
  1. Add the android:usesPermissionFlags attribute to your BLUETOOTH_SCAN permission declaration, and set this attribute’s value to neverForLocation.
    Note: If you include neverForLocation in your android:usesPermissionFlags, some BLE beacons are filtered from the scan results.
  2. If location isn’t otherwise needed for your app, remove the ACCESS_FINE_LOCATION permission from your app’s manifest.

Foreground services

Other new features in Android 12 include changes to foreground service launch restrictions. Except for a few exceptions, apps that target Android 12 can no longer start foreground services while running in the background. If this is attempted, a ForegroundServiceStartNotAllowedException will be thrown.

There are cases where foreground service launches from the background are allowed. These include when your app transitions from a user-visible state, when your app is the current input method, and when your app receives a high-priority message using Firebase Cloud Messaging. You can see the full list of exceptional cases here.

Key points:

  • A recommended alternative to foreground permissions is WorkManager. In addition to providing a simpler API, it has numerous other benefits including Work Constraints, Robust Scheduling, Flexible Retry Policy, Work Chaining and Built-In Threading Interoperability.

Notifications

Foreground service notifications UX delay

As we’ve said above, for most use cases foreground services can’t be used anymore. But for cases that can use foreground services, there will be a delay to some foreground service notifications by up to 10 seconds, giving tasks a short window to complete before pinging the user. If your foreground service follows some certain characteristics, it will display the notification immediately. 

The characteristics:

  • The service is associated with a notification that includes action buttons.
  • The service has a foregroundServiceType of mediaPlayback, mediaProjection, or phoneCall.
  • The service provides a use case related to phone calls, navigation, or media playback, as defined in the notification’s category attribute.
  • The service has opted out of the behavior change by passing FOREGROUND_SERVICE_IMMEDIATE into setForegroundServiceBehavior() when setting up the notification.

Notification trampoline restrictions

Android 12’s notification system will be tweaked to improve user experience and freshen up the aesthetics. It will prompt developers to stop using notification trampolines (these are like middle-man broadcast receivers) that bounce users from the notification to the app. Instead, notification taps will take users directly to the app. Also, some foreground service notifications will be delayed by up to 10 seconds giving tasks a short window to complete before pinging the user.

Key points:

  • In Android 12 you cannot start activities from services or broadcast receivers that are used as notification trampolines. After the user taps on a notification, or an action button within the notification, your app cannot call startActivity() inside of a service or broadcast receiver.
  • If your app starts an activity from a service or broadcast receiver that acts as a notification trampoline, you need to complete additional migration steps.

Custom notifications

Expect major changes to how apps can use custom notifications since complete customization is no longer available. Instead it will be limited to a customizable area within a standard notification template. Google says this is to make all notifications visually consistent for the user. 

Key points:

Privacy

Catching up with the privacy features in Apple’s iOS, the latest version of Android is its most ambitious privacy release to date. One of the biggest new features is the privacy dashboard which will tell users when apps have used location permissions, plus they can easily revoke permissions from here. Phones will also have visual indicators when cameras or microphones are being used.

Android 12 Privacy Dashboard

The good news is your app can provide rationale for users, to help them understand why your app accesses their location, camera or microphone information. This rationale can appear on the privacy dashboard screen, your app’s permission screen, or both.

Rationale for data access:

  • Use this to explain why your app accesses location, camera, and microphone information – complete the steps here.
  • Depending on which intent filters you add, users see an information icon next to your app’s name on certain screens.
  • If you add the intent filter that contains the VIEW_PERMISSION_USAGE action, users see the icon on your app’s permissions page in system settings.
  • If you add the intent filter that contains the VIEW_PERMISSION_USAGE_FOR_PERIOD action, users see the icon next to your app’s name whenever your app appears in the Privacy Dashboard screen.

Other new features in Android 12

Material You

The latest version of Android will boast a big visual revamp as part of Material You, the next generation of Google’s long-running Material Design. It will allow users to personalize the look of apps and the entire operating system across different types of devices and screens, from smartphones to smartwatches and big-screen monitors.

Redesigned widgets

Android 12 has made some widget improvements to make them more colorful, useful and interactive with controls to make the personalized experience better. A good thing for developers is the dynamic color APIs which adopt the system colors creating consistency and smoother transitions across different widgets.

Android 12 redesigned widgets

AppSearch

Another new feature is AppSearch. Applications can use it to offer custom in-app capabilities, allowing users to search for content even when offline. This provides a fast storage implementation with low I/O use, as well as highly efficient indexing and querying across large data sets compared to SQLite.

Stretch overscroll

Enabled by default, this iOS-like effect will give a natural experience to your app’s users. The elastic scrolling effect replaces the glow effect which was supported in previous versions.

Splash Screen API

A new Splash Screen API will enable new app launch animation. You can add a branding image, icon, background or animation directly in your themes.xml file, plus you can customize the animation for dismissing the splash screen using splashScreen.seOnExitAnimationListener{}.

Incoming call ranking

Android 12 will add the new notification style Notification.CallStyle for phone calls. Using this template lets your app indicate the importance of active calls by displaying a prominent chip that shows the time of the call in the status bar – the user can tap this chip to return to their call.

Rate-limited motion sensors

If your app targets Android 12, the system will place a limit on the refresh rate of data from certain motion sensors and position sensors. This is to protect potentially sensitive information about users.

Data access auditing

The data access auditing API, introduced in Android 11 (API level 30), allows you to create attribution tags based on your app’s use cases. This makes it easier to determine which part of your app performs a specific type of data access.

ADB backup restriction

To help protect private app data, Android 12 (API level 31) changes the default behavior of the adb backup command. When a user runs the adb backup command, app data is excluded from any other system data that is exported from the device.

Need help preparing for Android 12?

While we all may experience some impacts of Android 12, you will not meet any significant challenges in your use of the PlotProjects SDK. If you have any concerns, please contact us today.

Get in touch with us!