Guard ICC ID card string behind new identifier 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#getCardString. While this
API is hidden toString or a parcelable can be used to obtain it. This
change clears out the card string in any returned SubscriptionInfo
objects if the caller does not meet the new identifier access
requirements.

Bug: 152057778
Bug: 173421434
Test: atest SubscriptionControllerTest
Change-Id: I4406f1a2859f8ab691bb9f07da6940fb85e5cbb4
Merged-In: I4406f1a2859f8ab691bb9f07da6940fb85e5cbb4
2 files changed