Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e0de0181 authored by Michael Groover's avatar Michael Groover
Browse files

Add additional info to device ID docs in TelephonyManager and Build

Android 10 introduced additional restrictions to access persistent
device identifiers. This commit updates the javadocs for
TelephonyManager and Build to provide additional details regarding
the requirements and how to check if these requirements are met.

Fixes: 158471988
Test: m docs -j
Change-Id: I02932a22ecc5b761aa1a92d59d09d31863c34235
parent 0643914d
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -133,12 +133,23 @@ public class Build {
     * <a href="/training/articles/security-key-attestation.html">key attestation</a> to obtain
     * proof of the device's original identifiers.
     *
     * <p>Requires Permission: READ_PRIVILEGED_PHONE_STATE, for the calling app to be the device or
     * profile owner and have the READ_PHONE_STATE permission, or that the calling app has carrier
     * privileges (see {@link android.telephony.TelephonyManager#hasCarrierPrivileges}). The profile
     * owner is an app that owns a managed profile on the device; for more details see <a
     * href="https://developer.android.com/work/managed-profiles">Work profiles</a>. Profile owner
     * access is deprecated and will be removed in a future release.
     * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
     * restrictions, and apps are recommended to use resettable identifiers (see <a
     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
     * the following requirements is met:
     * <ul>
     *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
     *     is a privileged permission that can only be granted to apps preloaded on the device.
     *     <li>If the calling app is the device or profile owner and has been granted the
     *     {@link Manifest.permission#READ_PHONE_STATE} permission. The profile owner is an app that
     *     owns a managed profile on the device; for more details see <a
     *     href="https://developer.android.com/work/managed-profiles">Work profiles</a>.
     *     Profile owner access is deprecated and will be removed in a future release.
     *     <li>If the calling app has carrier privileges (see {@link
     *     android.telephony.TelephonyManager#hasCarrierPrivileges}) on any active subscription.
     *     <li>If the calling app is the default SMS role holder (see {@link
     *     android.app.role.RoleManager#isRoleHeld(String)}).
     * </ul>
     *
     * <p>If the calling app does not meet one of these requirements then this method will behave
     * as follows:
@@ -150,7 +161,7 @@ public class Build {
     *     the READ_PHONE_STATE permission, or if the calling app is targeting API level 29 or
     *     higher, then a SecurityException is thrown.</li>
     * </ul>
     * *
     *
     * @return The serial number if specified.
     */
    @SuppressAutoDoc // No support for device / profile owner.
+186 −70

File changed.

Preview size limit exceeded, changes collapsed.