API Level: 22


Android 5.1
([LOLLIPOP_MR1](https://developer.android.com/reference/android/os/Build.VERSION_CODES#LOLLIPOP_MR1))
is an update to the Lollipop release that offers new features for users and app developers.
This document provides an introduction to the most notable new APIs.


For a high-level look at the new platform features, see the [Android Lollipop highlights](https://developer.android.com/about/versions/lollipop).

### Update your target API level


To start building apps for Android 5.1, use the
[SDK Manager](https://developer.android.com/tools/help/sdk-manager) to download the Android 5.1 SDK
Platform and System Images. Then set your app development project to use a
[`targetSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#target)
of `"22"`. Install your app on an Android 5.1
system image, test it, then publish the updated app with this change.


You can use Android 5.1 APIs while also supporting older versions by adding
conditions to your code that check for the system API level before executing APIs not supported
by your [`minSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#min). To learn more about maintaining backward compatibility, read [Supporting Different Platform
Versions](https://developer.android.com/training/basics/supporting-devices/platforms).


For more information about how API levels work, read [What is API Level?](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

## Multiple SIM Card Support


Android 5.1 adds support for using more than one cellular carrier SIM card at a time. This
feature lets users activate and use additional SIMs on devices that have two or more SIM card
slots.


You can access information about the currently active SIM through the [SubscriptionManager](https://developer.android.com/reference/android/telephony/SubscriptionManager) class, including whether or not the device is considered
to be roaming on the current network. This information is useful for developers who want to
throttle their apps' data access down or off for device users who are sensitive to data access
charges. Your app can be alerted to changes in a device's current network connection by
requesting the [READ_PHONE_STATE](https://developer.android.com/reference/android/Manifest.permission#READ_PHONE_STATE) permission and setting [SubscriptionManager.OnSubscriptionsChangedListener](https://developer.android.com/reference/android/telephony/SubscriptionManager.OnSubscriptionsChangedListener) on the [SubscriptionManager](https://developer.android.com/reference/android/telephony/SubscriptionManager) object.

## Deprecated HTTP Classes


The `org.apache.http` classes and the `android.net.http.AndroidHttpClient` class
have been deprecated in Android 5.1. These classes are no longer being maintained and you should
migrate any app code using these APIs to the [URLConnection](https://developer.android.com/reference/java/net/URLConnection) classes as soon as
possible.

## Carrier Services


Android 5.1 provides support for telecommunication service providers to create apps that can
perform carrier provisioning tasks on an Android device. These APIs provide a secure and flexible
way for carrier-developed apps to perform these tasks and be distributed through Google Play. Apps
that use these functions must be signed by a certificate that matches the certificate in the
device's Universal Integrated Circuit Card (UICC).


The carrier service APIs have been added to the [TelephonyManager](https://developer.android.com/reference/android/telephony/TelephonyManager) class,
the [SmsManager](https://developer.android.com/reference/android/telephony/SmsManager) class, and the new [CarrierMessagingService](https://developer.android.com/reference/android/service/carrier/CarrierMessagingService) class. Apps can check for access to these APIs
by calling the [hasCarrierPrivileges()](https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()) method. Apps that
call these APIs without access receive a [SecurityException](https://developer.android.com/reference/java/lang/SecurityException).