Merge "Merge "Protect SID and NID in ServiceState with coarse location permission" am: 7013bca07a am: 5dbc71e1f0 am: 0b5def20fb"
diff --git a/core/api/current.txt b/core/api/current.txt
index 34497d1..4d1e280 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -42734,16 +42734,16 @@
ctor @Deprecated public ServiceState(android.os.Parcel);
method protected void copyFrom(android.telephony.ServiceState);
method public int describeContents();
- method public int getCdmaNetworkId();
- method public int getCdmaSystemId();
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public int getCdmaNetworkId();
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public int getCdmaSystemId();
method public int[] getCellBandwidths();
method public int getChannelNumber();
method public int getDuplexMode();
method public boolean getIsManualSelection();
method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoList();
- method public String getOperatorAlphaLong();
- method public String getOperatorAlphaShort();
- method public String getOperatorNumeric();
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public String getOperatorAlphaLong();
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public String getOperatorAlphaShort();
+ method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public String getOperatorNumeric();
method public boolean getRoaming();
method public int getState();
method public boolean isSearching();
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 70da9b9..65f5632 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -19,6 +19,7 @@
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.compat.annotation.UnsupportedAppUsage;
@@ -767,6 +768,10 @@
*
* @return long name of operator, null if unregistered or unknown
*/
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.ACCESS_FINE_LOCATION,
+ android.Manifest.permission.ACCESS_COARSE_LOCATION
+ })
public String getOperatorAlphaLong() {
return mOperatorAlphaLong;
}
@@ -782,6 +787,10 @@
* @return long name of operator
* @hide
*/
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.ACCESS_FINE_LOCATION,
+ android.Manifest.permission.ACCESS_COARSE_LOCATION
+ })
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q,
publicAlternatives = "Use {@link #getOperatorAlphaLong} instead.")
public String getVoiceOperatorAlphaLong() {
@@ -800,6 +809,10 @@
*
* @return short name of operator, null if unregistered or unknown
*/
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.ACCESS_FINE_LOCATION,
+ android.Manifest.permission.ACCESS_COARSE_LOCATION
+ })
public String getOperatorAlphaShort() {
return mOperatorAlphaShort;
}
@@ -815,6 +828,10 @@
* @return short name of operator, null if unregistered or unknown
* @hide
*/
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.ACCESS_FINE_LOCATION,
+ android.Manifest.permission.ACCESS_COARSE_LOCATION
+ })
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q,
publicAlternatives = "Use {@link #getOperatorAlphaShort} instead.")
public String getVoiceOperatorAlphaShort() {
@@ -832,6 +849,10 @@
* @return short name of operator, null if unregistered or unknown
* @hide
*/
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.ACCESS_FINE_LOCATION,
+ android.Manifest.permission.ACCESS_COARSE_LOCATION
+ })
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q,
publicAlternatives = "Use {@link #getOperatorAlphaShort} instead.")
public String getDataOperatorAlphaShort() {
@@ -853,6 +874,10 @@
* @return name of operator, null if unregistered or unknown
* @hide
*/
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.ACCESS_FINE_LOCATION,
+ android.Manifest.permission.ACCESS_COARSE_LOCATION
+ })
public String getOperatorAlpha() {
if (TextUtils.isEmpty(mOperatorAlphaLong)) {
return mOperatorAlphaShort;
@@ -878,6 +903,10 @@
* The country code can be decoded using
* {@link com.android.internal.telephony.MccTable#countryCodeForMcc(int)}.
*/
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.ACCESS_FINE_LOCATION,
+ android.Manifest.permission.ACCESS_COARSE_LOCATION
+ })
public String getOperatorNumeric() {
return mOperatorNumeric;
}
@@ -893,6 +922,10 @@
* @return numeric format of operator, null if unregistered or unknown
* @hide
*/
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.ACCESS_FINE_LOCATION,
+ android.Manifest.permission.ACCESS_COARSE_LOCATION
+ })
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
public String getVoiceOperatorNumeric() {
return mOperatorNumeric;
@@ -909,6 +942,10 @@
* @return numeric format of operator, null if unregistered or unknown
* @hide
*/
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.ACCESS_FINE_LOCATION,
+ android.Manifest.permission.ACCESS_COARSE_LOCATION
+ })
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q,
publicAlternatives = "Use {@link #getOperatorNumeric} instead.")
public String getDataOperatorNumeric() {
@@ -1747,8 +1784,17 @@
/**
* Get the CDMA NID (Network Identification Number), a number uniquely identifying a network
* within a wireless system. (Defined in 3GPP2 C.S0023 3.4.8)
+ *
+ * <p>Require at least {@link android.Manifest.permission#ACCESS_FINE_LOCATION} or
+ * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}. Otherwise return
+ * {@link #UNKNOWN_ID}.
+ *
* @return The CDMA NID or {@link #UNKNOWN_ID} if not available.
*/
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.ACCESS_FINE_LOCATION,
+ android.Manifest.permission.ACCESS_COARSE_LOCATION
+ })
public int getCdmaNetworkId() {
return this.mNetworkId;
}
@@ -1756,8 +1802,17 @@
/**
* Get the CDMA SID (System Identification Number), a number uniquely identifying a wireless
* system. (Defined in 3GPP2 C.S0023 3.4.8)
+ *
+ * <p>Require at least {@link android.Manifest.permission#ACCESS_FINE_LOCATION} or
+ * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}. Otherwise return
+ * {@link #UNKNOWN_ID}.
+ *
* @return The CDMA SID or {@link #UNKNOWN_ID} if not available.
*/
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.ACCESS_FINE_LOCATION,
+ android.Manifest.permission.ACCESS_COARSE_LOCATION
+ })
public int getCdmaSystemId() {
return this.mSystemId;
}
@@ -2058,6 +2113,8 @@
state.mOperatorAlphaLong = null;
state.mOperatorAlphaShort = null;
state.mOperatorNumeric = null;
+ state.mSystemId = UNKNOWN_ID;
+ state.mNetworkId = UNKNOWN_ID;
return state;
}