Merge "Add isMobileDataEnabled in TelephonyManager."

This commit is contained in:
Treehugger Robot
2018-01-09 23:46:55 +00:00
committed by Gerrit Code Review
5 changed files with 148 additions and 38 deletions

View File

@@ -40732,11 +40732,12 @@ package android.telephony {
method public java.lang.String iccTransmitApduBasicChannel(int, int, int, int, int, java.lang.String);
method public java.lang.String iccTransmitApduLogicalChannel(int, int, int, int, int, int, java.lang.String);
method public boolean isConcurrentVoiceAndDataSupported();
method public boolean isDataEnabled();
method public deprecated boolean isDataEnabled();
method public boolean isHearingAidCompatibilitySupported();
method public boolean isNetworkRoaming();
method public boolean isSmsCapable();
method public deprecated boolean isTtyModeSupported();
method public boolean isUserMobileDataEnabled();
method public boolean isVoiceCapable();
method public boolean isVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle);
method public boolean isWorldPhone();
@@ -40746,12 +40747,13 @@ package android.telephony {
method public java.lang.String sendEnvelopeWithStatus(java.lang.String);
method public void sendUssdRequest(java.lang.String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler);
method public void sendVisualVoicemailSms(java.lang.String, int, java.lang.String, android.app.PendingIntent);
method public void setDataEnabled(boolean);
method public deprecated void setDataEnabled(boolean);
method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String);
method public void setNetworkSelectionModeAutomatic();
method public boolean setNetworkSelectionModeManual(java.lang.String, boolean);
method public boolean setOperatorBrandOverride(java.lang.String);
method public boolean setPreferredNetworkTypeToGlobal();
method public void setUserMobileDataEnabled(boolean);
method public void setVisualVoicemailSmsFilterSettings(android.telephony.VisualVoicemailSmsFilterSettings);
method public boolean setVoiceMailNumber(java.lang.String, java.lang.String);
method public deprecated void setVoicemailRingtoneUri(android.telecom.PhoneAccountHandle, android.net.Uri);

View File

@@ -4039,7 +4039,7 @@ package android.telephony {
method public deprecated boolean isVisualVoicemailEnabled(android.telecom.PhoneAccountHandle);
method public boolean needsOtaServiceProvisioning();
method public int setAllowedCarriers(int, java.util.List<android.service.carrier.CarrierIdentifier>);
method public void setDataEnabled(int, boolean);
method public deprecated void setDataEnabled(int, boolean);
method public boolean setRadio(boolean);
method public boolean setRadioPower(boolean);
method public deprecated void setVisualVoicemailEnabled(android.telecom.PhoneAccountHandle, boolean);

View File

@@ -1794,7 +1794,7 @@ public class ConnectivityManager {
ITelephony it = ITelephony.Stub.asInterface(b);
int subId = SubscriptionManager.getDefaultDataSubscriptionId();
Log.d("ConnectivityManager", "getMobileDataEnabled()+ subId=" + subId);
boolean retVal = it.getDataEnabled(subId);
boolean retVal = it.isUserDataEnabled(subId);
Log.d("ConnectivityManager", "getMobileDataEnabled()- subId=" + subId
+ " retVal=" + retVal);
return retVal;

View File

@@ -5676,39 +5676,38 @@ public class TelephonyManager {
* @param enable Whether to enable mobile data.
*
* @see #hasCarrierPrivileges
* @deprecated use {@link #setUserMobileDataEnabled(boolean)} instead.
*/
@Deprecated
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
public void setDataEnabled(boolean enable) {
setDataEnabled(getSubId(SubscriptionManager.getDefaultDataSubscriptionId()), enable);
setUserMobileDataEnabled(enable);
}
/** @hide */
@SystemApi
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
public void setDataEnabled(int subId, boolean enable) {
try {
Log.d(TAG, "setDataEnabled: enabled=" + enable);
ITelephony telephony = getITelephony();
if (telephony != null)
telephony.setDataEnabled(subId, enable);
} catch (RemoteException e) {
Log.e(TAG, "Error calling ITelephony#setDataEnabled", e);
}
}
/**
* @deprecated use {@link #isDataEnabled()} instead.
* @hide
* @deprecated use {@link #setUserMobileDataEnabled(boolean)} instead.
*/
@SystemApi
@Deprecated
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
public void setDataEnabled(int subId, boolean enable) {
setUserMobileDataEnabled(subId, enable);
}
/**
* @deprecated use {@link #isUserMobileDataEnabled()} instead.
* @hide
*/
@SystemApi
@Deprecated
public boolean getDataEnabled() {
return isDataEnabled();
return isUserMobileDataEnabled();
}
/**
* Returns whether mobile data is enabled or not.
* Returns whether mobile data is enabled or not per user setting. There are other factors
* that could disable mobile data, but they are not considered here.
*
* If this object has been created with {@link #createForSubscriptionId}, applies to the given
* subId. Otherwise, applies to {@link SubscriptionManager#getDefaultDataSubscriptionId()}
@@ -5725,28 +5724,21 @@ public class TelephonyManager {
* @return true if mobile data is enabled.
*
* @see #hasCarrierPrivileges
* @deprecated use {@link #isUserMobileDataEnabled()} instead.
*/
@SuppressWarnings("deprecation")
@Deprecated
public boolean isDataEnabled() {
return getDataEnabled(getSubId(SubscriptionManager.getDefaultDataSubscriptionId()));
return isUserMobileDataEnabled();
}
/**
* @deprecated use {@link #isDataEnabled(int)} instead.
* @deprecated use {@link #isUserMobileDataEnabled()} instead.
* @hide
*/
@Deprecated
@SystemApi
public boolean getDataEnabled(int subId) {
boolean retVal = false;
try {
ITelephony telephony = getITelephony();
if (telephony != null)
retVal = telephony.getDataEnabled(subId);
} catch (RemoteException e) {
Log.e(TAG, "Error calling ITelephony#getDataEnabled", e);
} catch (NullPointerException e) {
}
return retVal;
return isUserMobileDataEnabled(subId);
}
/** @hide */
@@ -6898,4 +6890,101 @@ public class TelephonyManager {
}
return null;
}
/**
* Turns mobile data on or off.
* If the {@link TelephonyManager} object has been created with
* {@link #createForSubscriptionId}, this API applies to the given subId.
* Otherwise, it applies to {@link SubscriptionManager#getDefaultDataSubscriptionId()}
*
* <p>Requires Permission:
* {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the
* calling app has carrier privileges.
*
* @param enable Whether to enable mobile data.
*
* @see #hasCarrierPrivileges
*/
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
public void setUserMobileDataEnabled(boolean enable) {
setUserMobileDataEnabled(
getSubId(SubscriptionManager.getDefaultDataSubscriptionId()), enable);
}
/**
* Returns whether mobile data is enabled or not per user setting. There are other factors
* that could disable mobile data, but they are not considered here.
*
* If this object has been created with {@link #createForSubscriptionId}, applies to the given
* subId. Otherwise, applies to {@link SubscriptionManager#getDefaultDataSubscriptionId()}
*
* <p>Requires one of the following permissions:
* {@link android.Manifest.permission#ACCESS_NETWORK_STATE ACCESS_NETWORK_STATE},
* {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}, or that the
* calling app has carrier privileges.
*
* <p>Note that this does not take into account any data restrictions that may be present on the
* calling app. Such restrictions may be inspected with
* {@link ConnectivityManager#getRestrictBackgroundStatus}.
*
* @return true if mobile data is enabled.
*
* @see #hasCarrierPrivileges
*/
@RequiresPermission(anyOf = {
android.Manifest.permission.ACCESS_NETWORK_STATE,
android.Manifest.permission.MODIFY_PHONE_STATE
})
public boolean isUserMobileDataEnabled() {
return isUserMobileDataEnabled(
getSubId(SubscriptionManager.getDefaultDataSubscriptionId()));
}
/**
* @hide
* Unlike isUserMobileDataEnabled, this API also evaluates carrierDataEnabled,
* policyDataEnabled etc to give a final decision.
*/
public boolean isMobileDataEnabled() {
boolean retVal = false;
try {
int subId = getSubId(SubscriptionManager.getDefaultDataSubscriptionId());
ITelephony telephony = getITelephony();
if (telephony != null)
retVal = telephony.isDataEnabled(subId);
} catch (RemoteException e) {
Log.e(TAG, "Error calling ITelephony#isDataEnabled", e);
} catch (NullPointerException e) {
}
return retVal;
}
/**
* Utility class of {@link #isUserMobileDataEnabled()};
*/
private boolean isUserMobileDataEnabled(int subId) {
boolean retVal = false;
try {
ITelephony telephony = getITelephony();
if (telephony != null)
retVal = telephony.isUserDataEnabled(subId);
} catch (RemoteException e) {
Log.e(TAG, "Error calling ITelephony#isUserDataEnabled", e);
} catch (NullPointerException e) {
}
return retVal;
}
/** Utility method of {@link #setUserMobileDataEnabled(boolean)} */
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
private void setUserMobileDataEnabled(int subId, boolean enable) {
try {
Log.d(TAG, "setUserMobileDataEnabled: enabled=" + enable);
ITelephony telephony = getITelephony();
if (telephony != null)
telephony.setUserDataEnabled(subId, enable);
} catch (RemoteException e) {
Log.e(TAG, "Error calling ITelephony#setUserDataEnabled", e);
}
}
}

View File

@@ -870,14 +870,33 @@ interface ITelephony {
*
* @param enable true to turn on, else false
*/
void setDataEnabled(int subId, boolean enable);
void setUserDataEnabled(int subId, boolean enable);
/**
* Get the user enabled state of Mobile Data.
*
* TODO: remove and use isUserDataEnabled.
* This can't be removed now because some vendor codes
* calls through ITelephony directly while they should
* use TelephonyManager.
*
* @return true on enabled
*/
boolean getDataEnabled(int subId);
/**
* Get the user enabled state of Mobile Data.
*
* @return true on enabled
*/
boolean getDataEnabled(int subId);
boolean isUserDataEnabled(int subId);
/**
* Get the overall enabled state of Mobile Data.
*
* @return true on enabled
*/
boolean isDataEnabled(int subId);
/**
* Get P-CSCF address from PCO after data connection is established or modified.