Merge "Adding @hide API to return whether an APN is metered or not." into qt-dev

This commit is contained in:
Xiangyu/Malcolm Chen
2019-04-19 02:18:45 +00:00
committed by Android (Google) Code Review
2 changed files with 39 additions and 11 deletions

View File

@@ -64,6 +64,7 @@ import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle; import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager; import android.telecom.TelecomManager;
import android.telephony.VisualVoicemailService.VisualVoicemailTask; import android.telephony.VisualVoicemailService.VisualVoicemailTask;
import android.telephony.data.ApnSetting;
import android.telephony.emergency.EmergencyNumber; import android.telephony.emergency.EmergencyNumber;
import android.telephony.emergency.EmergencyNumber.EmergencyServiceCategories; import android.telephony.emergency.EmergencyNumber.EmergencyServiceCategories;
import android.telephony.ims.aidl.IImsConfig; import android.telephony.ims.aidl.IImsConfig;
@@ -10949,26 +10950,31 @@ public class TelephonyManager {
return new Pair<Integer, Integer>(-1, -1); return new Pair<Integer, Integer>(-1, -1);
} }
/** /**
* Return whether MMS data is enabled. This will tell if framework will accept a MMS network * Return whether data is enabled for certain APN type. This will tell if framework will accept
* request on a subId. * corresponding network requests on a subId.
* *
* Mms is enabled if: * {@link #isDataEnabled()} is directly associated with users' Mobile data toggle on / off. If
* 1) user data is turned on, or * {@link #isDataEnabled()} returns false, it means in general all meter-ed data are disabled.
* 2) MMS is un-metered for this subscription, or
* 3) alwaysAllowMms setting {@link SubscriptionManager#setAlwaysAllowMmsData} is turned on.
* *
* @return whether MMS data is allowed. * This per APN type API gives a better idea whether data is allowed on a specific APN type.
* It will return true if:
*
* 1) User data is turned on, or
* 2) APN is un-metered for this subscription, or
* 3) APN type is whitelisted. E.g. MMS is whitelisted if
* {@link SubscriptionManager#setAlwaysAllowMmsData} is turned on.
*
* @return whether data is enabled for a apn type.
* *
* @hide * @hide
*/ */
public boolean isMmsDataEnabled() { public boolean isDataEnabledForApn(@ApnSetting.ApnType int apnType) {
String pkgForDebug = mContext != null ? mContext.getOpPackageName() : "<unknown>"; String pkgForDebug = mContext != null ? mContext.getOpPackageName() : "<unknown>";
try { try {
ITelephony service = getITelephony(); ITelephony service = getITelephony();
if (service != null) { if (service != null) {
return service.isMmsDataEnabled(getSubId(), pkgForDebug); return service.isDataEnabledForApn(apnType, getSubId(), pkgForDebug);
} }
} catch (RemoteException ex) { } catch (RemoteException ex) {
if (!isSystemProcess()) { if (!isSystemProcess()) {
@@ -10977,4 +10983,24 @@ public class TelephonyManager {
} }
return false; return false;
} }
/**
* Whether an APN type is metered or not. It will be evaluated with the subId associated
* with the TelephonyManager instance.
*
* @hide
*/
public boolean isApnMetered(@ApnSetting.ApnType int apnType) {
try {
ITelephony service = getITelephony();
if (service != null) {
return service.isApnMetered(apnType, getSubId());
}
} catch (RemoteException ex) {
if (!isSystemProcess()) {
ex.rethrowAsRuntimeException();
}
}
return true;
}
} }

View File

@@ -1967,5 +1967,7 @@ interface ITelephony {
boolean isModemEnabledForSlot(int slotIndex, String callingPackage); boolean isModemEnabledForSlot(int slotIndex, String callingPackage);
boolean isMmsDataEnabled(int subId, String callingPackage); boolean isDataEnabledForApn(int apnType, int subId, String callingPackage);
boolean isApnMetered(int apnType, int subId);
} }