Add method to clear out SubscriptionInfo#getCardString

In Androird 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 as the cardString from the SubscriptionInfo.
While getCardString is a hidden API SubscriptionInfo#toString can
be used to obtain this value.

Bug: 152057778
Test: atest SubscriptionControllerTest
Change-Id: I9b8786a321b1ba79d81b74c3041589f30df8e9c8
This commit is contained in:
Michael Groover
2020-03-20 13:13:36 -07:00
parent ea920f597d
commit a953322575

View File

@@ -662,8 +662,16 @@ public class SubscriptionInfo implements Parcelable {
}
/**
* @return the card string of the SIM card which contains the subscription. The card string is
* the ICCID for UICCs or the EID for eUICCs.
* Returns the card string 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 on an organization owned device 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>.
*
* @return the card string of the SIM card which contains the subscription or an empty string
* if these requirements are not met. The card string is the ICCID for UICCs or the EID for
* eUICCs.
* @hide
* //TODO rename usages in LPA: UiccSlotUtil.java, UiccSlotsManager.java, UiccSlotInfoTest.java
*/
@@ -671,6 +679,13 @@ public class SubscriptionInfo implements Parcelable {
return this.mCardString;
}
/**
* @hide
*/
public void clearCardString() {
this.mCardString = "";
}
/**
* Returns the card ID of the SIM card which contains the subscription (see
* {@link UiccCardInfo#getCardId()}.