Merge "Remove calls to getLteOnCdmaModeStatic()"
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 560f1cc..2346e32 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -5554,6 +5554,74 @@
}
/**
+ * Get the allowed network types for certain reason.
+ *
+ * @param subId the id of the subscription.
+ * @param reason the reason the allowed network type change is taking place
+ * @return the allowed network types.
+ */
+ @Override
+ public long getAllowedNetworkTypesForReason(int subId,
+ @TelephonyManager.AllowedNetworkTypesReason int reason) {
+ TelephonyPermissions
+ .enforeceCallingOrSelfReadPrivilegedPhoneStatePermissionOrCarrierPrivilege(
+ mApp, subId, "getAllowedNetworkTypesForReason");
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ return getPhoneFromSubId(subId).getAllowedNetworkTypes(reason);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ /**
+ * Get the effective allowed network types on the device.
+ * This API will return an intersection of allowed network types for all reasons,
+ * including the configuration done through setAllowedNetworkTypes
+ *
+ * @param subId the id of the subscription.
+ * @return the allowed network types
+ */
+ @Override
+ public long getEffectiveAllowedNetworkTypes(int subId) {
+ TelephonyPermissions
+ .enforeceCallingOrSelfReadPrivilegedPhoneStatePermissionOrCarrierPrivilege(
+ mApp, subId, "getEffectiveAllowedNetworkTypes");
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ return getPhoneFromSubId(subId).getEffectiveAllowedNetworkTypes();
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ /**
+ * Set the allowed network types of the device and
+ * provide the reason triggering the allowed network change.
+ *
+ * @param subId the id of the subscription.
+ * @param reason the reason the allowed network type change is taking place
+ * @param allowedNetworkTypes the allowed network types.
+ * @return true on success; false on any failure.
+ */
+ @Override
+ public boolean setAllowedNetworkTypesForReason(int subId,
+ @TelephonyManager.AllowedNetworkTypesReason int reason, long allowedNetworkTypes) {
+ TelephonyPermissions.enforceCallingOrSelfModifyPermissionOrCarrierPrivilege(
+ mApp, subId, "setAllowedNetworkTypesForReason");
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ getPhoneFromSubId(subId).setAllowedNetworkTypes(reason, allowedNetworkTypes);
+ int preferredNetworkMode = Settings.Global.getInt(mApp.getContentResolver(),
+ Settings.Global.PREFERRED_NETWORK_MODE + subId,
+ RILConstants.PREFERRED_NETWORK_MODE);
+ return setPreferredNetworkType(subId, preferredNetworkMode);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ /**
* Check whether DUN APN is required for tethering with subId.
*
* @param subId the id of the subscription to require tethering.
@@ -8240,6 +8308,11 @@
//TODO investigate if this API should require proper permission check in R b/133791609
final long identity = Binder.clearCallingIdentity();
try {
+ String carrierUAProfUrl = mApp.getCarrierConfigForSubId(subId).getString(
+ CarrierConfigManager.KEY_MMS_UA_PROF_URL_STRING);
+ if (!TextUtils.isEmpty(carrierUAProfUrl)) {
+ return carrierUAProfUrl;
+ }
return SubscriptionManager.getResourcesForSubId(getDefaultPhone().getContext(), subId)
.getString(com.android.internal.R.string.config_mms_user_agent_profile_url);
} finally {
@@ -8252,6 +8325,11 @@
//TODO investigate if this API should require proper permission check in R b/133791609
final long identity = Binder.clearCallingIdentity();
try {
+ String carrierUserAgent = mApp.getCarrierConfigForSubId(subId).getString(
+ CarrierConfigManager.KEY_MMS_USER_AGENT_STRING);
+ if (!TextUtils.isEmpty(carrierUserAgent)) {
+ return carrierUserAgent;
+ }
return SubscriptionManager.getResourcesForSubId(getDefaultPhone().getContext(), subId)
.getString(com.android.internal.R.string.config_mms_user_agent);
} finally {
diff --git a/src/com/android/phone/TelephonyShellCommand.java b/src/com/android/phone/TelephonyShellCommand.java
index 53b3356..e0c9110 100644
--- a/src/com/android/phone/TelephonyShellCommand.java
+++ b/src/com/android/phone/TelephonyShellCommand.java
@@ -22,6 +22,7 @@
import android.os.Process;
import android.os.RemoteException;
import android.os.ShellCommand;
+import android.provider.BlockedNumberContract;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
@@ -56,6 +57,7 @@
private static final String IMS_SUBCOMMAND = "ims";
private static final String NUMBER_VERIFICATION_SUBCOMMAND = "numverify";
private static final String EMERGENCY_NUMBER_TEST_MODE = "emergency-number-test-mode";
+ private static final String END_BLOCK_SUPPRESSION = "end-block-suppression";
private static final String CARRIER_CONFIG_SUBCOMMAND = "cc";
private static final String DATA_TEST_MODE = "data";
private static final String DATA_ENABLE = "enable";
@@ -82,6 +84,7 @@
private SubscriptionManager mSubscriptionManager;
private CarrierConfigManager mCarrierConfigManager;
+ private Context mContext;
private enum CcType {
BOOLEAN, DOUBLE, DOUBLE_ARRAY, INT, INT_ARRAY, LONG, LONG_ARRAY, STRING,
@@ -132,6 +135,7 @@
(CarrierConfigManager) context.getSystemService(Context.CARRIER_CONFIG_SERVICE);
mSubscriptionManager = (SubscriptionManager)
context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
+ mContext = context;
}
@Override
@@ -153,6 +157,8 @@
}
case DATA_TEST_MODE:
return handleDataTestModeCommand();
+ case END_BLOCK_SUPPRESSION:
+ return handleEndBlockSuppressionCommand();
default: {
return handleDefaultCommands(cmd);
}
@@ -169,12 +175,15 @@
pw.println(" IMS Commands.");
pw.println(" emergency-number-test-mode");
pw.println(" Emergency Number Test Mode Commands.");
+ pw.println(" end-block-suppression");
+ pw.println(" End Block Suppression command.");
pw.println(" data");
pw.println(" Data Test Mode Commands.");
pw.println(" cc");
pw.println(" Carrier Config Commands.");
onHelpIms();
onHelpEmergencyNumber();
+ onHelpEndBlockSupperssion();
onHelpDataTestMode();
onHelpCc();
}
@@ -242,6 +251,13 @@
pw.println(" -p: get the full emergency number list in the test mode.");
}
+ private void onHelpEndBlockSupperssion() {
+ PrintWriter pw = getOutPrintWriter();
+ pw.println("End Block Suppression command:");
+ pw.println(" end-block-suppression: disable suppressing blocking by contact");
+ pw.println(" with emergency services.");
+ }
+
private void onHelpCc() {
PrintWriter pw = getOutPrintWriter();
pw.println("Carrier Config Commands:");
@@ -1169,4 +1185,15 @@
}
return bundle;
}
+
+ private int handleEndBlockSuppressionCommand() {
+ if (!checkShellUid()) {
+ return -1;
+ }
+
+ if (BlockedNumberContract.SystemContract.getBlockSuppressionStatus(mContext).isSuppressed) {
+ BlockedNumberContract.SystemContract.endBlockSuppression(mContext);
+ }
+ return 0;
+ }
}