Add non dangerous read phone state permission
Add non dangerous read phone state permission Bug: 198535473 Test: CTS. Change-Id: Ic6cbaf7113e09d618eb54e9f40fa033d803421c9
This commit is contained in:
@@ -120,6 +120,7 @@ package android {
|
||||
field @Deprecated public static final String PERSISTENT_ACTIVITY = "android.permission.PERSISTENT_ACTIVITY";
|
||||
field @Deprecated public static final String PROCESS_OUTGOING_CALLS = "android.permission.PROCESS_OUTGOING_CALLS";
|
||||
field public static final String QUERY_ALL_PACKAGES = "android.permission.QUERY_ALL_PACKAGES";
|
||||
field public static final String READ_BASIC_PHONE_STATE = "android.permission.READ_BASIC_PHONE_STATE";
|
||||
field public static final String READ_CALENDAR = "android.permission.READ_CALENDAR";
|
||||
field public static final String READ_CALL_LOG = "android.permission.READ_CALL_LOG";
|
||||
field public static final String READ_CONTACTS = "android.permission.READ_CONTACTS";
|
||||
@@ -42722,11 +42723,11 @@ package android.telephony {
|
||||
method public int getCarrierIdFromSimMccMnc();
|
||||
method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.telephony.CellLocation getCellLocation();
|
||||
method public int getDataActivity();
|
||||
method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getDataNetworkType();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_BASIC_PHONE_STATE}) public int getDataNetworkType();
|
||||
method public int getDataState();
|
||||
method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDeviceId();
|
||||
method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDeviceId(int);
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getDeviceSoftwareVersion();
|
||||
method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_BASIC_PHONE_STATE}) public String getDeviceSoftwareVersion();
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getEmergencyNumberList();
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getEmergencyNumberList(int);
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<java.lang.String> getEquivalentHomePlmns();
|
||||
@@ -42779,7 +42780,7 @@ package android.telephony {
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVisualVoicemailPackageName();
|
||||
method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailAlphaTag();
|
||||
method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailNumber();
|
||||
method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getVoiceNetworkType();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_BASIC_PHONE_STATE}) public int getVoiceNetworkType();
|
||||
method @Nullable public android.net.Uri getVoicemailRingtoneUri(android.telecom.PhoneAccountHandle);
|
||||
method public boolean hasCarrierPrivileges();
|
||||
method public boolean hasIccCard();
|
||||
@@ -42791,10 +42792,10 @@ package android.telephony {
|
||||
method @Deprecated public String iccTransmitApduLogicalChannel(int, int, int, int, int, int, String);
|
||||
method public boolean isConcurrentVoiceAndDataSupported();
|
||||
method public boolean isDataCapable();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE, "android.permission.READ_PRIVILEGED_PHONE_STATE"}) public boolean isDataConnectionAllowed();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataEnabled();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.MODIFY_PHONE_STATE}) public boolean isDataEnabledForReason(int);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataRoamingEnabled();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE, "android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_BASIC_PHONE_STATE}) public boolean isDataConnectionAllowed();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_BASIC_PHONE_STATE}) public boolean isDataEnabled();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.READ_BASIC_PHONE_STATE}) public boolean isDataEnabledForReason(int);
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_BASIC_PHONE_STATE}) public boolean isDataRoamingEnabled();
|
||||
method public boolean isEmergencyNumber(@NonNull String);
|
||||
method public boolean isHearingAidCompatibilitySupported();
|
||||
method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRECISE_PHONE_STATE, "android.permission.READ_PRIVILEGED_PHONE_STATE"}) public boolean isManualNetworkSelectionAllowed();
|
||||
|
||||
@@ -1199,6 +1199,14 @@
|
||||
android:description="@string/permdesc_readPhoneState"
|
||||
android:protectionLevel="dangerous" />
|
||||
|
||||
<!-- Allows read only access to phone state with a non dangerous permission,
|
||||
including the information like cellular network type, software version. -->
|
||||
<permission android:name="android.permission.READ_BASIC_PHONE_STATE"
|
||||
android:permissionGroup="android.permission-group.UNDEFINED"
|
||||
android:label="@string/permlab_readBasicPhoneState"
|
||||
android:description="@string/permdesc_readBasicPhoneState"
|
||||
android:protectionLevel="normal" />
|
||||
|
||||
<!-- Allows read access to the device's phone number(s). This is a subset of the capabilities
|
||||
granted by {@link #READ_PHONE_STATE} but is exposed to instant applications.
|
||||
<p>Protection level: dangerous-->
|
||||
|
||||
@@ -1350,6 +1350,12 @@
|
||||
phone number and device IDs, whether a call is active, and the remote number
|
||||
connected by a call.</string>
|
||||
|
||||
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR_LIMIT=80]-->
|
||||
<string name="permlab_readBasicPhoneState">read basic telephony status and identity </string>
|
||||
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR_LIMIT=NONE] -->
|
||||
<string name="permdesc_readBasicPhoneState">Allows the app to access the basic telephony
|
||||
features of the device.</string>
|
||||
|
||||
<!-- Title of an application permission. When granted the user is giving access to a third
|
||||
party app to route its calls through the system. -->
|
||||
<string name="permlab_manageOwnCalls">route calls through the system</string>
|
||||
|
||||
@@ -107,6 +107,26 @@ public final class TelephonyPermissions {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check whether the caller (or self, if not processing an IPC) has non dangerous
|
||||
* read phone state permission.
|
||||
* @param context app context
|
||||
* @param message detail message
|
||||
* @return true if permission is granted, else false
|
||||
*/
|
||||
public static boolean checkCallingOrSelfReadNonDangerousPhoneStateNoThrow(
|
||||
Context context, String message) {
|
||||
try {
|
||||
context.enforcePermission(
|
||||
Manifest.permission.READ_BASIC_PHONE_STATE,
|
||||
Binder.getCallingPid(), Binder.getCallingUid(), message);
|
||||
return true;
|
||||
} catch (SecurityException se) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the app with the given pid/uid can read phone state.
|
||||
*
|
||||
|
||||
@@ -1895,9 +1895,10 @@ public class TelephonyManager {
|
||||
* the IMEI/SV for GSM phones. Return null if the software version is
|
||||
* not available.
|
||||
* <p>
|
||||
* Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}.
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
|
||||
@RequiresPermission(anyOf = {
|
||||
android.Manifest.permission.READ_PHONE_STATE,
|
||||
android.Manifest.permission.READ_BASIC_PHONE_STATE})
|
||||
@Nullable
|
||||
public String getDeviceSoftwareVersion() {
|
||||
return getDeviceSoftwareVersion(getSlotIndex());
|
||||
@@ -2959,7 +2960,9 @@ public class TelephonyManager {
|
||||
* when opportunistic network is providing cellular internet connection to the user.
|
||||
*
|
||||
* <p>Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
|
||||
* or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}).
|
||||
* or {@link android.Manifest.permission#READ_BASIC_PHONE_STATE
|
||||
* READ_BASIC_PHONE_STATE} or that the calling app has carrier privileges
|
||||
* (see {@link #hasCarrierPrivileges}).
|
||||
*
|
||||
* @return the network type
|
||||
*
|
||||
@@ -2982,7 +2985,9 @@ public class TelephonyManager {
|
||||
* @see #NETWORK_TYPE_NR
|
||||
*/
|
||||
@SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges
|
||||
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
|
||||
@RequiresPermission(anyOf = {
|
||||
android.Manifest.permission.READ_PHONE_STATE,
|
||||
android.Manifest.permission.READ_BASIC_PHONE_STATE})
|
||||
public @NetworkType int getDataNetworkType() {
|
||||
return getDataNetworkType(getSubId(SubscriptionManager.getActiveDataSubscriptionId()));
|
||||
}
|
||||
@@ -3020,10 +3025,14 @@ public class TelephonyManager {
|
||||
* Returns the NETWORK_TYPE_xxxx for voice
|
||||
*
|
||||
* <p>Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
|
||||
* or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}).
|
||||
* or {@link android.Manifest.permission#READ_BASIC_PHONE_STATE
|
||||
* READ_BASIC_PHONE_STATE} or that the calling app has carrier privileges
|
||||
* (see {@link #hasCarrierPrivileges}).
|
||||
*/
|
||||
@SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges
|
||||
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
|
||||
@RequiresPermission(anyOf = {
|
||||
android.Manifest.permission.READ_PHONE_STATE,
|
||||
android.Manifest.permission.READ_BASIC_PHONE_STATE})
|
||||
public @NetworkType int getVoiceNetworkType() {
|
||||
return getVoiceNetworkType(getSubId());
|
||||
}
|
||||
@@ -9975,7 +9984,9 @@ public class TelephonyManager {
|
||||
*
|
||||
* <p>Requires one of the following permissions:
|
||||
* {@link android.Manifest.permission#ACCESS_NETWORK_STATE},
|
||||
* {@link android.Manifest.permission#MODIFY_PHONE_STATE}, or that the calling app has carrier
|
||||
* {@link android.Manifest.permission#MODIFY_PHONE_STATE}, or
|
||||
* {@link android.Manifest.permission#READ_BASIC_PHONE_STATE
|
||||
* READ_BASIC_PHONE_STATE} or that the calling app has carrier
|
||||
* privileges (see {@link #hasCarrierPrivileges}).
|
||||
*
|
||||
* <p>Note that this does not take into account any data restrictions that may be present on the
|
||||
@@ -9986,7 +9997,8 @@ public class TelephonyManager {
|
||||
*/
|
||||
@RequiresPermission(anyOf = {android.Manifest.permission.ACCESS_NETWORK_STATE,
|
||||
android.Manifest.permission.MODIFY_PHONE_STATE,
|
||||
android.Manifest.permission.READ_PHONE_STATE})
|
||||
android.Manifest.permission.READ_PHONE_STATE,
|
||||
android.Manifest.permission.READ_BASIC_PHONE_STATE})
|
||||
public boolean isDataEnabled() {
|
||||
try {
|
||||
return isDataEnabledForReason(DATA_ENABLED_REASON_USER);
|
||||
@@ -10005,14 +10017,17 @@ public class TelephonyManager {
|
||||
*
|
||||
* <p>Requires one of the following permissions:
|
||||
* {@link android.Manifest.permission#ACCESS_NETWORK_STATE},
|
||||
* {@link android.Manifest.permission#READ_PHONE_STATE} or that the calling app
|
||||
* {@link android.Manifest.permission#READ_PHONE_STATE} or
|
||||
* {@link android.Manifest.permission#READ_BASIC_PHONE_STATE
|
||||
* READ_BASIC_PHONE_STATE} or that the calling app
|
||||
* has carrier privileges (see {@link #hasCarrierPrivileges}).
|
||||
*
|
||||
* @return {@code true} if the data roaming is enabled on the subscription, otherwise return
|
||||
* {@code false}.
|
||||
*/
|
||||
@RequiresPermission(anyOf = {android.Manifest.permission.ACCESS_NETWORK_STATE,
|
||||
android.Manifest.permission.READ_PHONE_STATE})
|
||||
android.Manifest.permission.READ_PHONE_STATE,
|
||||
android.Manifest.permission.READ_BASIC_PHONE_STATE})
|
||||
public boolean isDataRoamingEnabled() {
|
||||
boolean isDataRoamingEnabled = false;
|
||||
try {
|
||||
@@ -12418,11 +12433,13 @@ public class TelephonyManager {
|
||||
* {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} or
|
||||
* {@link android.Manifest.permission#ACCESS_NETWORK_STATE} or
|
||||
* {@link android.Manifest.permission#MODIFY_PHONE_STATE}
|
||||
* {@link android.Manifest.permission#READ_BASIC_PHONE_STATE}
|
||||
* @throws IllegalStateException if the Telephony process is not currently available.
|
||||
*/
|
||||
@RequiresPermission(anyOf = {android.Manifest.permission.ACCESS_NETWORK_STATE,
|
||||
android.Manifest.permission.READ_PHONE_STATE,
|
||||
android.Manifest.permission.MODIFY_PHONE_STATE
|
||||
android.Manifest.permission.MODIFY_PHONE_STATE,
|
||||
android.Manifest.permission.READ_BASIC_PHONE_STATE
|
||||
})
|
||||
public boolean isDataEnabledForReason(@DataEnabledReason int reason) {
|
||||
return isDataEnabledForReason(getSubId(), reason);
|
||||
@@ -12558,14 +12575,11 @@ public class TelephonyManager {
|
||||
* <LI>And possibly others.</LI>
|
||||
* </UL>
|
||||
* @return {@code true} if the overall data connection is allowed; {@code false} if not.
|
||||
* <p>Requires Permission:
|
||||
* {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} or
|
||||
* {@link android.Manifest.permission#ACCESS_NETWORK_STATE} or
|
||||
* android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE
|
||||
*/
|
||||
@RequiresPermission(anyOf = {android.Manifest.permission.ACCESS_NETWORK_STATE,
|
||||
android.Manifest.permission.READ_PHONE_STATE,
|
||||
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE})
|
||||
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
|
||||
android.Manifest.permission.READ_BASIC_PHONE_STATE})
|
||||
public boolean isDataConnectionAllowed() {
|
||||
boolean retVal = false;
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user