Update the getIccId docs to reflect access requirements

In Android 10 access to device identifiers was limited to apps with
the READ_PRIVILEGED_PHONE_STATE permission, carrier privileges, the
READ_DEVICE_IDENTIFIERS appop set to allow, or those that pass a
device / profile owner check. TelephonyManager#getSimSerialNumber
was guarded behind these new access requirements, but the same value
is still accessible via SubscriptionInfo#getIccId. This change
updates the documentation to reflect that the getIccId will no
longer be accessible if the caller does not meet the new access
requirements.

Bug: 131909991
Test: Builds
Change-Id: I03072c65e1c7101538a7a20541d2ac59a2d213e3
This commit is contained in:
Michael Groover
2020-01-21 20:00:41 -08:00
parent ba61f7022c
commit 296fea7448

View File

@@ -16,8 +16,6 @@
package android.telephony;
import com.android.telephony.Rlog;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
@@ -40,6 +38,7 @@ import android.util.DisplayMetrics;
import android.util.Log;
import com.android.internal.telephony.util.TelephonyUtils;
import com.android.telephony.Rlog;
import java.util.ArrayList;
import java.util.Arrays;
@@ -217,6 +216,20 @@ public class SubscriptionInfo implements Parcelable {
*/
private boolean mAreUiccApplicationsEnabled = true;
/**
* Public copy constructor.
* @hide
*/
public SubscriptionInfo(SubscriptionInfo info) {
this(info.mId, info.mIccId, info.mSimSlotIndex, info.mDisplayName, info.mCarrierName,
info.mNameSource, info.mIconTint, info.mNumber, info.mDataRoaming, info.mIconBitmap,
info.mMcc, info.mMnc, info.mCountryIso, info.mIsEmbedded, info.mNativeAccessRules,
info.mCardString, info.mCardId, info.mIsOpportunistic,
info.mGroupUUID == null ? null : info.mGroupUUID.toString(), info.mIsGroupDisabled,
info.mCarrierId, info.mProfileClass, info.mSubscriptionType, info.mGroupOwner,
info.mCarrierConfigAccessRules, info.mAreUiccApplicationsEnabled);
}
/**
* @hide
*/
@@ -292,12 +305,26 @@ public class SubscriptionInfo implements Parcelable {
}
/**
* @return the ICC ID.
* Returns the ICC ID if the calling app has been granted the READ_PRIVILEGED_PHONE_STATE
* permission, has carrier privileges (see {@link TelephonyManager#hasCarrierPrivileges}), or
* is a device owner or profile owner that has been granted the 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.
*
* @return the ICC ID, or an empty string if one of these requirements is not met
*/
public String getIccId() {
return this.mIccId;
}
/**
* @hide
*/
public void clearIccId() {
this.mIccId = "";
}
/**
* @return the slot index of this Subscription's SIM card.
*/